typescript

[타입스크립트] interface 와 type 의 차이

승딱 2021. 6. 1. 19:46
반응형

음 interface 랑 type 이랑 용도가 묶어서 타입을 지정해주는 거 같은데 뭐가 다른건지 그리고 좀 더 정확하게 어떤역할인지 알아보자..

 

인터페이스 : 여러속성이 다른 타입을 가질때 이 묶음을 하나의 타입으로 만들어 버리기~

타입 앨리어스 : 새로운 타입을 지정 할수있다...

 

사실상 거의 비슷한 느낌이다.

 

차이점 >

1. 인터페이스는 타입만 지정할수 있지만 타입앨리어스는 원시값이나 유니온타입 튜플 등도 타입으로 지정 할 수있다.

// 문자열 리터럴로 타입 지정
type Str = 'Lee';

// 유니온 타입으로 타입 지정
type Union = string | null;

// 함수 유니온 타입으로 타입 지정
type Func = (() => string) | (() => void);

// 인터페이스 유니온 타입으로 타입 지정
type Shape = Square | Rectangle | Circle;

// 튜플로 타입 지정
type Tuple = [string, boolean];

2.

  • interface는 같은 이름으로 여러 번 선언을 해도 컴파일 시점에서 합쳐지기 때문에 확장성이 좋다. 따라서 일반적으로는 interface를 사용하고 union, tuple 등이 필요한 경우에만 type 별칭을 사용하라는 TypeScript Handbook의 내용은 현재에도 유효하다.
  • declaration merging으로 확장할 수 있기 때문에, 외부에 노출해야 하는 public API에 사용되는 타입은 항상 interface를 사용하여 작성해야 한다.
  • type 별칭으로 작성된 타입은 조금 더 제한적이기 때문에 private API같이 외부에 노출할 필요가 없는 경우에 사용하는 것이 좋다.

 

출처: https://joonsungum.github.io/post/2019-02-25-typescript-interface-and-type-alias/