• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

생성자 함수 타입 abstract new (...args: any) => any

23.06.28 09:08 작성 조회수 351

0

function test<T extends abstract new (...args: any) => any>(param: T): void{}

class A {
  a: string = 'hi'
}

test(A); // 성공
test(new A()); // 실패

abstract new (...args: any) => any이 생서자 함수타입이라고 하셨는데

클래스 A의 생성자 함수(constructor)는 prototype 하위에 있고 A의 인스턴스는 __proto__ 내부에 constructor이 있는걸로 알고있는데 왜 클래스만 통과되고 인스턴스는 통과하지 못하는지 궁금합니다.

답변 2

·

답변을 작성해보세요.

0

대원님의 프로필

대원

2023.07.18

생성자 함수로서 호출하여 생성된게 인스턴스인데
인스턴스를 생성자 함수 자리에 넣는것 자체가 맞지않다고 생각합니다. 그리고 A의 인스턴스는 __proto__ 는 생성자 함수의 prototype 객체입니다. A는 prototype이 아닌 내부슬롯 [[prototype]] 을 갖고있습니다. 즉 확인하신 인스턴스 __proto__ 의 constructor 는 class A 의 constructor입니다.

0

이건 에러메시지만 봐도 왜 안되는지 아실 수 있을텐데요?