타입스크립트는 많은 부분을 스스로 추론할 수 있습니다. 추론하려는 부분을 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 = {}
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.