← Back to NOTES 🌰 ← Back to Effective TypeScript

← 아이템 49 - 콜백에서 this에 대한 타입 제공하기

핵심 요약

오버로딩 타입보다 조건부 타입을 사용하면, 추가적인 오버로딩 없이 유니온 타입을 지원할 수 있다. TypeScript는 타입과 런타임의 동작이 무관하기 때문에 함수 오버로딩이 불가능하지만, 타입 수준에서 하나의 함수에 여러 개의 선언문을 작성할 수 있다. 조건부 타입(삼항 연산자)을 이용하여 정교한 반환 타입을 지정할 수 있다.

자세한 내용

TypeScript의 함수 오버로딩 제약

타입과 런타임의 분리:

타입 수준 오버로딩:

오버로딩 타입의 문제점

문제 1: 너무 넓은 타입

function double(x: number | string): number | string;

문제 2: 너무 좁은 타입

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