我正在使用grunt-typescript,它正在編譯我所有的* .ts文件。我使用angular-mocks.d.ts和node.d.ts,但是我在我的實際ts文件中分別引用它們。我使用angular-mocks僅用於茉莉花測試,而我在我的server.ts文件中使用節點。
問題我所知道的是,儘管它們是分開引用的,但當它們在grunt-typescript中編譯時,它似乎會以某種方式將它們轉儲到一起,以使它們的兩個不同的「模塊」定義最終衝突。如果我使用tsc(它引用了node.d.ts)自己構建我的server.ts文件,它會很好地構建。這兩個應該永遠不會重合,所以對我來說不是真的衝突,除非它正在成爲一個grunt-typescript中的一個,它似乎在編譯時將所有* .d.ts文件一起轉儲。我認爲這是因爲它將所有的* .ts文件一起構建,因此最終將* .d.ts文件一起放入一個公共空間。在「module」全局變量上運行grunt-typescript時angular-mock和node.js發生衝突
的錯誤,我得到:
C:/node/bills/typings/node/node.d.ts(37,13): 錯誤TS2134:隨後的變量聲明必須具有相同的類型。變量'模塊'必須是類型'(...模塊:任何[])=>任何',但這裏有類型'{exports:any; require(id:string):any; id:string;文件名:字符串; loaded:boolean;父母:任何;兒童:任何[]; }」。
角mocks.d.ts 「模塊」 的定義:
declare var module: (...modules: any[]) => any;
node.d.ts 「模塊」 的定義:
declare var module: {
exports: any;
require(id: string): any;
id: string;
filename: string;
loaded: boolean;
parent: any;
children: any[];
}
不僅僅是一種解決方法! angular-mock的類型定義建議您始終使用'angular.mock.module'。 – user2954463