하지만 다음과 같은 경우에는 선언 병합을 활용하면 좋습니다.
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를 따릅니다. 앰비언트 선언한 타입과 그렇지 않은 타입끼리도 병합됩니다.