2017-04-27 4 views
1

TypeScript 파일 foo.d.ts가 있습니다."모듈 선언"최상위 선언으로 TypeScripd 선언 파일에서 내용 가져 오기

declare module Foo { 
} 

declare module Fun { 
} 

코드 자동 생성 된 Bridge.NET입니다, 그래서 (내가 할 수있는 수정할 수 없습니다, 실제로는하지만이되지 않습니다 :. 그것은 구조 아무것도 더 "모듈을 선언"많이 포함 잘 생긴 해결책).

파일이 import * as bridge from "./foo"; 인 다른 파일에서 참조되는 경우 tsc는 "파일 foo.d.ts가 모듈이 아닙니다."라고 말합니다. 내가 뭘 잘못하고있어?

생성 된 파일 (foo.d.ts)을 편집하고 더미 최상위 내보내기 (export interface Fix {})의 끝에 추가하면 문제가 사라집니다.

답변

3

오류가 발생한 이유는 foo.d.ts이 실제로 모듈이 아니기 때문에 스크립트입니다. 그러나 임포트 문은 모듈과 함께 사용해야합니다. export interface Fix {}을 추가하면 파일이 모듈로 변환되어 오류가 사라졌습니다.

공통 규칙은 매우 간단합니다. 내보내기 수정자를 포함하는 하나 이상의 최상위 엔티티 (클래스/인터페이스/변수 ..)가있는 경우 TypeScript 컴파일러가 파일을 모듈로 처리합니다. 그렇지 않으면 파일이 스크립트처럼 처리됩니다.

foo.d.ts이 모듈이 아니라면 아래 지시문을 사용하여 참조 할 수 있습니다. 이 경우 파일에 선언 된 모든 항목이 전역 적으로 사용 가능합니다.

/// <reference path="foo.d.ts" />