더북(TheBook)

2.22 infer로 타입스크립트의 추론을 직접 활용하자

infer 예약어는 타입스크립트의 타입 추론 기능을 극한까지 활용하는 기능입니다. 컨디셔널 타입과 함께 사용합니다.

다음과 같은 상황에서 infer를 활용할 수 있습니다. 배열이 있을 때 배열의 요소 타입을 얻어내고 싶은 상황입니다.

type El<T> = T extends (infer E)[] ? E : never;
type Str = El<string[]>;
// type Str = string
type NumOrBool = El<(number | boolean)[]>;
// type NumOrBool = number | boolean

El 타입에서 infer를 활용했습니다. 타입스크립트에 추론을 맡기고 싶은 부분을 'infer 타입_변수'로 표시하면 됩니다. 예제에서는 E가 타입 변수(type variable)입니다.

다만 컨디셔널 타입에서 타입 변수는 참 부분에서만 쓸 수 있습니다. 다음과 같이 거짓 부분에서 쓰려고 하면 에러가 발생합니다.

type El<T> = T extends (infer E)[] ? never : E;
// Cannot find name 'E'.
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.