Typescript의 Interface와 Type의 차이는 뭘까
TypeScript에서 interface
와 type
은 유사한 기능을 제공하지만, 몇 가지 중요한 차이점이 있습니다.
1. Interface (인터페이스)
- 정의 및 사용: 객체의 구조를 정의하는 데 사용됩니다. 선택적 속성(optional properties) 및 읽기 전용 속성(readonly properties)을 포함할 수 있습니다.
- 확장성: 인터페이스는 다른 인터페이스를 확장할 수 있으며, 동일한 이름으로 선언되면 자동으로 합쳐지거나 확장됩니다.
- 융통성: 인터페이스는 객체의 형태를 정의하는 데 초점을 맞추고 있으며, 객체 간의 계약(contract)을 설정하는 데 유용합니다.
2. Type (타입)
- 정의 및 사용: 새로운 타입을 정의하는 데 사용되며, 유니온이나 교차와 같은 복합 타입을 만드는 데 유용합니다.
- 확장성: 타입은 확장될 수 없으며, 한 번 선언되면 변경할 수 없습니다. 이는 타입의 재정의가 불가능함을 의미합니다.
- 유연성: 복잡한 타입 조합을 표현하는데 유리합니다. 예를 들어, 다양한 타입들의 조합을 쉽게 표현할 수 있습니다.
주요 차이점
- 확장 가능성: 인터페이스는 확장 가능하지만, 타입은 확장이 불가능합니다. 인터페이스는 같은 이름으로 다시 선언되면 확장(merge)되지만, 타입은 그렇지 않습니다.
- 사용 목적: 인터페이스는 객체의 형태를 정의하고, 계약을 설정하는 데 주로 사용됩니다. 반면, 타입은 복잡한 타입 조합을 정의하는 데 더 적합합니다.
사용 권장 사항
- 인터페이스 사용: 객체의 구조를 정의하고, API를 확장 가능하게 만들고자 할 때 사용합니다.
- 타입 사용: 복잡한 타입 조합이 필요할 때, 예를 들어 유니온이나 교차 타입을 사용할 때 적합합니다.
결론
interface
와 type
은 각각의 특성에 따라 선택적으로 사용되어야 합니다. TypeScript의 구조적 타이핑 시스템에서 두 구성 요소는 서로 다른 목적으로 사용되며, 각각의 장단점에 따라 적절한 상황에서 사용하는 것이 좋습니다.
참고 자료: TypeScript 공식 문서의 Types vs Interfaces, Handbook - Interfaces, Documentation - Everyday Types 페이지입니다.
728x90
'DEV' 카테고리의 다른 글
Electron 애플리케이션의 구조와 동작 원리 (0) | 2024.02.02 |
---|---|
Typescript에서 require() of ES Module (1) | 2024.01.26 |
매번 yarn build 하지 않고 자동 빌드 및 재시작하는 방법 (0) | 2024.01.06 |
Electron 애플리케이션 개발: Yarn을 활용한 기본 설정과 파일 구성 (0) | 2024.01.04 |
2023-50W 대노스터디 (0) | 2023.12.12 |