1. 공통점
- object의 타입을 정의하는 데 사용될 수 있다.
- class를 통해 구현(implementation)이 가능하다.
- 확장(extension)이 가능하다.
2. 차이점
- 중복 선언
- Type alias는 중복 선언이 불가능하지만 Interface는 중복 선언이 가능하다. 그러나 Interface의 중복 선언은 새롭게 정의되는 것이 아니라 기존의 정의에 새로운 내용이 추가되는 것이다. (Intersection으로 생각하면 된다, 그러나 여태까지 프로젝트 경험으로 봤을 때는 실용성 있는 차이인지에 대해서 아직 잘 모르겠다.)
- Union type
- Type alias는 Union type이 가능하다. 그러나 Intersection은 Union type이 불가능하다.
3. 결론
- Union type이 필요한 경우 Type alias를 사용한다.
- 클래스 등을 통해 구현되는 경우 일반적으로 '인터페이스'라는 표현을 사용하기 때문에 Interface를 사용하는 것이 보다 바람직할 것 같다.
- 그 외에는 어떠한 것을 적용하는 것이 올바른지에 대해 의견차가 존재하여 개발 팀의 문화 등에 맞춰서 적용하는 것이 바람직하다고 생각된다.
'프론트엔드 기본개념 복습 > Typescript' 카테고리의 다른 글
[Typescript] String Union Type을 value로 사용하기 (0) | 2022.02.09 |
---|---|
[Typescript] Mapped Types & Utility Types (0) | 2022.02.02 |
[Typescript] Intersection Type (0) | 2022.01.31 |
[Typescript] never 타입 (0) | 2022.01.31 |
[Typescript] 타입스크립트 기본 개념 (0) | 2022.01.30 |