더북(TheBook)

하지만 다음과 같은 경우에는 선언 병합을 활용하면 좋습니다.

declare class A {
  constructor(name: string);
}
function A(name: string) {
  return new A(name);
}

new A('zerocho');
A('zerocho');

클래스가 있을 때 new를 붙이지 않아도 되게 하는 코드입니다. class A는 앰비언트 선언이고, function A는 일반 선언입니다. declare로 앰비언트 선언한 타입도 병합되고, 표 2-5를 따릅니다. 앰비언트 선언한 타입과 그렇지 않은 타입끼리도 병합됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.