본문으로 건너뛰기

아이템 50 오버로딩 타입보다는 조건부 타입을 사용하기

조건부 타입은 타입 공간의 if 구문과 같다.

function double<T extends number | string>(x: T): T extends string ? string : number;

function double(x: any) {
return x + x;
}
  • 조건부 타입은 자바스크립트의 삼항 연산자처럼 사용하면 된다.
  • Tstring 의 부분 집합이면(string, 또는 문자열 리터럴, 또는 문자열 리터럴의 유니온), 반환 타입이 string 이다.
  • 그 외의 경우는 반환 타입이 number 이다.

오버로딩 타입이 작성하기는 쉽지만, 조건부 타입은 개별 타입의 유니온으로 일반화하기 때문에 타입이 더 정확해진다. 타입 오버로딩이 필요한 경우에 가끔 조건부 타입이 필요한 상황이 발생한다. 각각의 오버로딩 타입이 독립적으로 처리되는 반면 조건부 타입은 타입 체커가 단일 표현식으로 받아들이기 때문에 유니온 문제를 해결할 수 있다.

요약

  • 오버로딩 타입보다 조건부 타입을 사용하는 것이 좋다. 조건부 타입은 추가적인 오버로딩 없이 유니온 타입을 지원할 수 있다.