Typescript infer keyword
Typescript에는 함수를 이용하여 함수의 반환 타입을 만들 수 있는 유틸리티 타입인 ReturnType이 있는데, 아래와 같이 생겼습니다.
type ReturnType<
T extends (...args: any) => any
> = T extends (...args: any) => infer R ?
R : any;여기서 infer라는 키워드를 볼 수 있는데, 이 infer 의 사전적 의미로는 “추론”이라는 뜻이 있습니다. 단순히 ReturnType을 읽어보면, T 는 (…args: any) ⇒ any 함수의 Type 집합 안에 있고, T의 결과값을 R이라는 값으로 추론합니다.
즉, infer는 extends 키워드를 이용하여 새로운 Type으로 치환하여 이 치환된 Type을 이용할 수 있도록 도와주는 키워드입니다.