myBind라는 OmitThisParameter를 사용하지 않는 임의의 메서드를 만들어보았습니다. bind 메서드와는 반환값 타입만 다릅니다.
이 코드는 자바스크립트에서는 아무런 문제가 없습니다. 그런데 myAdd0(3, 4)를 할 때 this가 void라고 에러가 발생합니다. 이미 this 자리에 5를 bind했기에 myAdd0 함수는 더 이상 this가 필요하지 않습니다. 그래서 OmitThisParameter로 this를 제거한 함수 타입을 사용하는 것입니다.
이번에는 add1 함수를 분석해보겠습니다.
...
const add1 = add.bind(null, 1);
add1(2, 3, 4, 5);
add1(2, 3, 4, 5, 6); // 15
// Expected 0-4 arguments, but got 5.
add1 함수는 this가 null이고 첫 번째 매개변수가 1로 bind되어 있습니다. 따라서 인수는 4개(b, c, d, e)까지만 받으면 됩니다. 인수를 5개 넣으면 에러가 발생합니다. 어떻게 인수를 4개까지만 넣어야 하는지 알 수 있을까요? add1 함수의 bind는 다음과 같은 타입입니다.