@types/hapi
에 의존하는 노드 응용 프로그램이 있습니다. 이 모듈에 정의 된 클래스 중 하나에 속성을 추가하고 싶습니다.모듈 확대를 통해 기존 TypeScript 인터페이스에 속성을 추가해도 영향이 없음
// my-custom-hapi-typings.d.ts
import * as hapi from 'hapi';
declare module hapi {
interface Server {
myProperty: string;
}
}
이 어떤 컴파일러 오류가 발생하지 않습니다, 그러나 또한 Server
클래스에 myProperty
속성을 추가하지 않습니다 나는 모듈 확대를 통해 나의 새로운 속성을 정의하는 시도했습니다.
// my-other-file.ts
import * as hapi from 'hapi';
const server = new hapi.Server({ ... });
// error: Property 'myProperty' does not exist on type 'Server'.
server.myProperty = 'hello';
왜 타이프 스크립트 컴파일러 내 .d.ts
파일을 무시하는 것처럼 보인다 : 나는 시도하고 다음과 같은 속성을 참조 할 때 나는 아직도 다른 곳에서 내 프로젝트의 오류를 얻을? 파일을 "가져올"필요가 있거나이 파일이 존재한다는 것을 TypeScript 컴파일러가 인식하도록해야합니까? 나는 입력 소스 디렉토리에 .d.ts
파일을 두는 것만으로도이 보강 작업을 수행하기에 충분했습니다.
최상위 '가져 오기'는 파일을 모듈로 만듭니다. 제거해보십시오. – Aaron
@Aaron, 응답 주셔서 감사하지만 방금 최상위 수준의 '가져 오기'제거하고 그 결과는 동일합니다. –
"hapi"를 따옴표로 묶어보십시오 :'declare module "hapi"'. 'Server' 인터페이스를'export '해야 할 수도 있습니다. – Aaron