여러 종류의 파라메터를 받는 함수 시그니처를 명세할 때에는 함수 오버로딩 대신 조건부 타입을 활용한 함수 시그니처 명세가 더 정교한 타입 추론을 가능하게 할 수 있습니다.
|
//비추 (타입 오버로딩)
function double(x: number): number;
function double(x: string): string;
function double(x: any) { return x + x;};
const x = double(10);
const y = double('yy');
const z: string | number = '11';
function zz(z : number | string){
double(z); // 오류
}
|
|
// //추천 (조건부 타입)
function double<T extends string | number>(x: T): T extends string ? string : number;
function double(x: any) { return x + x;};
function zz2(z : number | string){
double(z); // 정상
}
|
오버로딩 타입보다는 조건부 타입을 사용하는 것이 좋습니다. 조건부 타입은 추가적인 오버로딩 없이 유니온 타입을 지원 가능하기 때문입니다.
'IT' 카테고리의 다른 글
| Effective Typescript - 52 - 테스팅 타입의 함정에 주의하기 (0) | 2022.01.24 |
|---|---|
| Effective Typescript - 51 - 의존성 분리를 위해 미러 타입 사용하기 (0) | 2022.01.24 |
| Effective Typescript - 49 - 콜백에서 this에 대한 타입 제공하기 (0) | 2022.01.24 |
| Effective Typescript - 48 - API 주석에 TSDoc 사용하기 (0) | 2022.01.24 |
| Effective Typescript - 47 - 공개 API에 등장하는 모든 타입을 익스포트하기 (0) | 2022.01.24 |