Type VS Interface

CGH96·2023년 10월 10일
0

TypeScript

목록 보기
3/3

# 서론

Type과 interface에는 다양한 차이가 존재한다. 이것들에 대한 개인적인 궁금점들을 해결하고 정리해보려 한다.



# Type VS Interface

우선 type과 interface의 명확한 차이들을 짚어보자.

차이점 1. Interface는 객체에만 사용 가능하다.

type은 다음과 같은 저의가 가능하나 interface는 불가능하다.

type TSample = string; // 가능
interface ISample = string // 불가능

차이점 2. Type은 선언을 통한 확장이 불가능하다.



차이점 3. interface는 extends 키워드를 통해 확장하고 type은 intersection 연산자를 통해 확장한다.



# Type과 Interface를 각각 언제 쓸 것인가?

TypeScript를 사용하면서 처음에 가장 많이 고민하는 것이 이 둘을 언제 사용하는가일 것 같다.

구글링을 해보니 공식문서도 그렇고 'heuristic하게 사용해야 한다'는 입장들이 대부분이다. heuristic이라 하면 정확한 정답은 아닐 수 있지만 그동안의 경험과 정보를 바탕으로 합리적이라고 생각하는 방향을 택하는 것인데, 즉, type과 interface의 쓰임새에 대한 명확한 정답은 없다가 정답인 것 같다.

우선 나는 다음과 같이 사용해왔다.

  • 객체를 추상화할 때 interface
  • type을 구체적으로 정의하고 파악하는 것이 중요할 때 type을 사용한다.

interface는 공식문서에서도 값이 가지는 모양을 체크하는 것이 주된 역할이라고 한다. 이 모양을 설계하는 것이 나는 추상화라고 생각했다.

이 차이는 IDE에서도 잘 나타난다고 생각한다. type으로 정의된 type명에 마우스를 갖다대면 구체적인 type모양을 알려준다. 하지만 interface의 경우는 그렇지 않다.

그리고 마지막으로 나는 보통 interface명의 경우 처음 접두사로 I를 붙이고, type명의 경우 접두사로 T를 사용하는 컨벤션을 애용하고 있다.

0개의 댓글