인프런 커뮤니티 질문&답변

Rona님의 프로필 이미지
Rona

작성한 질문수

[리뉴얼] 타입스크립트 올인원 : Part1. 기본 문법편

bind type 질문

작성

·

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);

답변 1

Rona님의 프로필 이미지
Rona

작성한 질문수

질문하기