• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

타입에서의 this 가 헷갈립니다

22.09.11 19:26 작성 조회수 119

0

bind<T A0, A extends any[], R>(this: (this: T, arg0: A0, ...args: A) => R, thisArg: T, arg0: A0): (...args: A) => R;

위 타입에서 this가 두번 나오는데 서로 의미하는 바가 다른 것 같습니다.

두번째 this는 실제 함수에서 arguments로써 사용되는 this인 것 같은데

const Func(this:someThing) {}

첫번째 this가 의미하는바가 무엇인지 이해가 잘 안가네요..

 

그리고 OmitThisParamter 타입을 분석을 해보려고 하니 아래 부분 비교를 한다는 것은 T에 this arguments가 존재한다는 뜻으로 이해를 했는데 ...args 만으로 표기를하면 this까지 포함되는게 아닌건가요?

T extends (...args: infer A) => infer R

제 생각에는 다음과 같이 되어야 할 것 같은데 어떻게 this를 제외한건지 명확하게 이해가 안갑니다

T extends (this:unknown, ...args: infer A) => infer R

 

 

답변 1

답변을 작성해보세요.

1

일단 bind 함수에서 쓰이는 this가 (this: T, arg0: A0, ...args: A) => R 함수인 것입니다. 그리고 그 this 함수에 대한 this가 T인 것입니다.

const a = b.bind(1, 2, 3);
a; // (this: T, arg0: A0, ...args: A) => R

...args로 표기하면 this는 포함되지 않습니다. js 문법상 ...args가 this를 포함하지 않기 때문입니다.