더북(TheBook)

add0bind는 인수가 한 개이므로 CallableFunction의 첫 번째 bind 선언에 해당합니다. 타입은 다음과 같습니다.

lib.es5.d.ts

interface CallableFunction extends Function {
  (...)
  bind<T>(this: T, thisArg: ThisParameterType<T>): OmitThisParameter<T>;
  (...)
}

먼저 thisT(a?: number, b?: number, c?: number, d?: number, e?: number) => number 꼴의 함수입니다. 분석을 이어가기 위해서는 ThisParameterTypeOmitThisParameter 타입이 무엇인지 알아보아야 합니다. 둘 다 lib.es5.d.ts에 선언되어 있습니다.

lib.es5.d.ts

type ThisParameterType<T> = T extends (this: infer U, ...args: never) => any ? U : unknown;

type OmitThisParameter<T> = unknown extends ThisParameterType<T> ? T : T extends (...args: infer A) => infer R ? (...args: A) => R : T;
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.