Type과 interface에는 다양한 차이가 존재한다. 이것들에 대한 개인적인 궁금점들을 해결하고 정리해보려 한다.
우선 type과 interface의 명확한 차이들을 짚어보자.
type
은 다음과 같은 저의가 가능하나 interface는 불가능하다.
type TSample = string; // 가능
interface ISample = string // 불가능
TypeScript를 사용하면서 처음에 가장 많이 고민하는 것이 이 둘을 언제 사용하는가
일 것 같다.
구글링을 해보니 공식문서도 그렇고 'heuristic하게 사용해야 한다'는 입장들이 대부분이다. heuristic
이라 하면 정확한 정답은 아닐 수 있지만 그동안의 경험과 정보를 바탕으로 합리적이라고 생각하는 방향을 택하는 것인데, 즉, type과 interface의 쓰임새에 대한 명확한 정답은 없다
가 정답인 것 같다.
우선 나는 다음과 같이 사용해왔다.
추상화
할 때 interfaceinterface
는 공식문서에서도 값이 가지는 모양
을 체크하는 것이 주된 역할이라고 한다. 이 모양
을 설계하는 것이 나는 추상화
라고 생각했다.
이 차이는 IDE에서도 잘 나타난다고 생각한다. type으로 정의된 type명에 마우스를 갖다대면 구체적인 type모양을 알려준다. 하지만 interface의 경우는 그렇지 않다.
그리고 마지막으로 나는 보통 interface명의 경우 처음 접두사로 I
를 붙이고, type명의 경우 접두사로 T
를 사용하는 컨벤션을 애용하고 있다.