TypeScript의 infer 키워드는 조건부 타입(extends ? :) 내에서만 사용할 수 있는 강력한 기능입니다. 특정 타입 구조 내의 일부 타입을 런타임이 아닌 컴파일 타임에 동적으로 추론해 낼 수 있게 해 줍니다.

기본적인 형태

다음은 함수의 반환 타입을 직접 알아내는 간단한 예제입니다.

type MyReturnType<T> = T extends (...args: any[]) => infer R ? R : any;

여기서 T가 함수형 타입 구조를 가지고 있다면 반환되는 부위를 R로 추론(infer)하여 그 타입을 그대로 반환하게 됩니다. 다양한 라이브러리에서 이 패턴을 활용해 복잡한 API 반환 타입을 정교하게 유도하고 있습니다.