-
[타입스크립트] interface 와 type 의 차이typescript 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/
'typescript' 카테고리의 다른 글
[타입스크립트] enum ?? (0) 2021.06.04 [타입스크립트] 제네릭 에 대하여 (0) 2021.06.03 [typescript] 메모장 (0) 2021.04.23 [typescript & emotion] react 에서 emotion 사용해보기 (0) 2021.04.19 [typescript error] Type '{ children: Element; }' has no properties in common with type 'IntrinsicAttributes' (0) 2021.04.12