작성
·
57
1
안녕하세요 ts version 5.5.4 입니다.
bind 타입정의는 아래와 같이 되어있습니다.
bind(this: Function, thisArg: any, ...argArray: any[]): any;
bind<T>(this: T, thisArg: ThisParameterType<T>): OmitThisParameter<T>;
bind<T, A extends any[], B extends any[], R>(this: (this: T, ...args: [...A, ...B]) => R, thisArg: T, ...args: A): (...args: B) => R;
bind<T>(this: T, thisArg: any): T;
bind<A extends any[], B extends any[], R>(this: new (...args: [...A, ...B]) => R, thisArg: any, ...args: A): new (...args: B) => R;
영상에 나온 예시를 아래와 같이 따라쳤을때 add1, add2, add3, add4, add5, add6 전부 타입이 any로 추론되고 있습니다. 왜 전부 any로 추론되는지 궁금하고 bind<T>(this: T, thisArg: ThisParameterType<T>): OmitThisParameter<T>; 타입은 bind 함수에서 어떻게 사용할 수 있는지 궁금합니다.
또, bind<Window> 명시적으로 타입을 선언을 해보고 싶었는데, Expected 0 type arguments, but got 1.ts(2558) 와 같은 에러만 발생합니다,, 제가 어떤걸 잘못 한걸까요..?
function add(a:number, b: number, c: number, d: number, e: number, f: number) {
return a + b + c + d + e + f;
}
const add1 = add.bind(null);
add1(1,2,3,4,5,6);
const add2 = add.bind(null, 1);
add2(2,3,4,5,6);
const add3 = add.bind(null, 1, 2);
add3(3,4,5,6)
const add4 = add.bind(null, 1,2,3);
add4(4,5,6);
const add5 = add.bind(null, 1,2,3,4);
add5(5,6);
const add6 = add.bind(null, 1,2,3,4,5);
add6(6);