Item 13 타입과 인터페이스의 차이점 알기
Named Types
타입스크립트에서 명명된 타입(named type)을 정의하는 방법은 다음 두 가지가 있다.
참고로 IState
, TState
처럼 I(인터페이스), T(타입) 접두사를 붙이는 것은 C#에서 비롯된 관례로, 현재는 지양해야 할 스타일로 여겨진다.
대부분 어느 것을 사용해도 되지만, 차이를 분명하게 알고, 같은 상황에선 동일한 방법으로 명명된 타입을 정의해 일관성을 유지해야 한다.
타입은 인터페이스를 확장할 수 있다.
인터페이스는 유니온 타입 같은 복잡한 타입을 확장하지는 못한다.
클래스를 구현(
implements
)할 때는, 타입과 인터페이스 둘 다 사용할 수 있다.type
키워드는 일반적으로interface
보다 쓰임새가 많다. (유니온, 매핑된 타입, 조건부 타입 등 고급 기능, 튜플, 배열)인터페이스는 보강(augment) 기능을 지원한다.
Summary
일관되게 인터페이스를 사용하는 코드베이스에서 작업하고 있다면 인터페이스를, 일관되게 타입을 사용 중이라면 타입을 사용하자.
아직 스타일이 확립되지 않은 프로젝트라면, 향후의 보강의 가능성이 있는지 생각해 봐야 한다.
어떤 API에 대한 타입 선언을 작성해야 한다면 인터페이스를 사용하는 것이 좋다. API가 변경될 때 사용자가 인터페이스를 통해 새로운 필드를 병합할 수 있어 유용하기 때문이다.
그러나 프로젝트 내부적으로 사용되는 타입에 선언 병합이 발생하는 것은 잘못된 설계이므로, 이럴 때는 타입을 사용하자.
Last updated