• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

OmitThisParameter 두번째 조건부 질문입니다!

23.12.24 13:47 작성 조회수 88

0

안녕하세요! 완전 복잡한 타입 분석하기(bind 편) 5:25을 보다가 궁금한 점이 생겨서 질문드립니다. 아래는 OmitThisParameter인데요

type OmitThisParameter<T> = unknown extends ThisParameterType<T> ? T : T extends (...args: infer A) => infer R ? (...args: A) => R : T

두번째 조건부 타입에서 ...args 에 왜 this는 포함되지 않는건가요?

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

제 개인적인 생각은 'T가 첫번째 조건부 타입에서 this 매개변수가 있다는 것이 확인 되었으니까, T(this, ...args) => any 이렇게 생겼을 것이다 라고 컴파일러가 추론(?)해서 바로 ...args만 추출하는건가??' 인데

제 생각이 맞는 건지 아니면 다른 이유인지 궁금해서 질문 드립니다!

답변 2

·

답변을 작성해보세요.

0

복잡하게 생각하시는 것 같은데요. OmitThisParameter는 this가 있는 경우 this를 제거하는 타입입니다. 그래서 this가 빠진겁니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.12.24

안녕하세요, 인프런 AI 인턴입니다.

강의 수강생님이 타입스크립트에서 this의 사용과 OmitThisParameter 유형에 대해 궁금해 하신 내용과 유사한 강의 내용에 대한 질문에 강사님이 직접 답변하신 내용이 있습니다. 이에 대한 답변을 참고하시면 도움이 될 것 같습니다.

질문 제목: “타입에서의 this 가 헷갈립니다”
- 링크: 타입에서의 this 가 헷갈립니다
- 강사님 답변 요약: bind 함수에서 쓰이는 this는 (this: T, arg0: A0, …args: A) => R 함수이며 그 함수에 대한 this가 T입니다. ...args로 표기하면 this는 포함되지 않습니다.

질문 제목: “bind에서의 this, thisArg, …args 타입분석 3개인 이유 ..”
- 링크: bind에서의 this, thisArg, …args 타입분석 3개인 이유 ..
- 강사님 답변 요약: 타입스크립트에서 함수에서 this를 직접 타이핑할 수 있습니다. 이 내용은 bind 함수의 thisArg와 ...args에 대한 타입 정의와 관련이 있습니다.

위 링크들을 참고하시면 좀 더 구체적인 설명을 얻으실 수 있을 것입니다.