방정식의 미지수와 같은 역할을 하는 연산자입니다.
배열 요소의 타입을 추론하는 예시를 통해 알아봅니다.
type ArrayElementType<T> = T extends (infer E)[] ? E : never
const names = ["Jun", "Smith"]
const numbers = [1, 2, 3]
const union = ["Hello", 123]
type Name = ArrayElementType<typeof names> // string
type Num = ArrayElementType<typeof numbers> // number
type Union = ArrayElementType<typeof union> // string | number
TypeScript는 전달받은 T
가 어떤 타입인지 정확히 알고 있습니다.
extends
를 이용해 배열이 어떤 타입인지 검사합니다.
string[]
와 (infer E)[]
가 일치합니다.
즉, TypeScript는 E
를 string
으로 추론하고, 이 값을 타입으로 할당합니다.