더북(TheBook)

타입스크립트는 많은 부분을 스스로 추론할 수 있습니다. 추론하려는 부분을 infer로 만들면 됩니다. 다음은 각각 매개변수, 생성자 매개변수, 반환값, 인스턴스 타입을 추론하는 타입입니다.

type MyParameters<T> = T extends (...args: infer P) => any ? P : never;

type MyConstructorParameters<T> = T extends abstract new (...args: infer P) => any ? P : never;

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

type MyInstanceType<T> = T extends abstract new (...args: any) => infer R ? R : any;

type P = MyParameters<(a: string, b: number) => string>
// type P = [a: string, b: number]

type R = MyReturnType<(a: string, b: number) => string>
// type R = string

type CP = MyConstructorParameters<new (a: string, b: number) => {}>
// type CP = [a: string, b: number]

type I = MyInstanceType<new (a: string, b: number) => {}>
// type I = {}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.