더북(TheBook)

add2, add3, add4도 이런 식으로 인수의 개수를 줄일 수 있습니다. add2는 인수를 3개까지 받을 수 있고, add32개, add41개까지만 가능합니다. 그런데 add5의 경우는 다릅니다. 규칙대로라면 add50개의 인수를 받아야 하는데 다음 코드처럼 인수를 받아도 에러가 발생하지 않습니다.

...
const add2 = add.bind(null, 1, 2);
add2(3, 4, 5);
const add3 = add.bind(null, 1, 2, 3);
add3(4, 5);
const add4 = add.bind(null, 1, 2, 3, 4);
add4(5);
const add5 = add.bind(null, 1, 2, 3, 4, 5);
add5(5);

에러가 발생하지 않는 이유는, add5에서는 bind의 타입이 다르기 때문입니다.

interface CallableFunction extends Function {
  (...)
  bind<T, AX, R>(this: (this: T, ...args: AX[]) => R, thisArg: T, ...args: AX[]): (...args: AX[]) => R;
  (...)
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.