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

    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를 따릅니다. 앰비언트 선언한 타입과 그렇지 않은 타입끼리도 병합됩니다.

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