봄수의 연구실

Typescript의 interfaced와 type의 차이는 뭘까 본문

DEV

Typescript의 interfaced와 type의 차이는 뭘까

berom 2024. 1. 25. 09:30

Typescript의 Interface와 Type의 차이는 뭘까

TypeScript에서 interfacetype은 유사한 기능을 제공하지만, 몇 가지 중요한 차이점이 있습니다.

1. Interface (인터페이스)

  • 정의 및 사용: 객체의 구조를 정의하는 데 사용됩니다. 선택적 속성(optional properties) 및 읽기 전용 속성(readonly properties)을 포함할 수 있습니다.
  • 확장성: 인터페이스는 다른 인터페이스를 확장할 수 있으며, 동일한 이름으로 선언되면 자동으로 합쳐지거나 확장됩니다.
  • 융통성: 인터페이스는 객체의 형태를 정의하는 데 초점을 맞추고 있으며, 객체 간의 계약(contract)을 설정하는 데 유용합니다.

2. Type (타입)

  • 정의 및 사용: 새로운 타입을 정의하는 데 사용되며, 유니온이나 교차와 같은 복합 타입을 만드는 데 유용합니다.
  • 확장성: 타입은 확장될 수 없으며, 한 번 선언되면 변경할 수 없습니다. 이는 타입의 재정의가 불가능함을 의미합니다.
  • 유연성: 복잡한 타입 조합을 표현하는데 유리합니다. 예를 들어, 다양한 타입들의 조합을 쉽게 표현할 수 있습니다.

주요 차이점

  • 확장 가능성: 인터페이스는 확장 가능하지만, 타입은 확장이 불가능합니다. 인터페이스는 같은 이름으로 다시 선언되면 확장(merge)되지만, 타입은 그렇지 않습니다.
  • 사용 목적: 인터페이스는 객체의 형태를 정의하고, 계약을 설정하는 데 주로 사용됩니다. 반면, 타입은 복잡한 타입 조합을 정의하는 데 더 적합합니다.

사용 권장 사항

  • 인터페이스 사용: 객체의 구조를 정의하고, API를 확장 가능하게 만들고자 할 때 사용합니다.
  • 타입 사용: 복잡한 타입 조합이 필요할 때, 예를 들어 유니온이나 교차 타입을 사용할 때 적합합니다.

결론

interfacetype은 각각의 특성에 따라 선택적으로 사용되어야 합니다. TypeScript의 구조적 타이핑 시스템에서 두 구성 요소는 서로 다른 목적으로 사용되며, 각각의 장단점에 따라 적절한 상황에서 사용하는 것이 좋습니다.

참고 자료: TypeScript 공식 문서의 Types vs Interfaces, Handbook - Interfaces, Documentation - Everyday Types 페이지입니다.

728x90