【发布时间】:2014-03-22 00:02:30
【问题描述】:
我正在使用 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 文件一起拉到一个公共空间中。
我得到的错误:
c:/node/bills/typings/node/node.d.ts(37,13): 错误 TS2134:后续变量声明必须具有相同的类型。变量 'module' 必须是 '(...modules: any[]) => any' 类型,但这里有类型 '{ exports: any;要求(id:字符串):任何; id:字符串;文件名:字符串;加载:布尔值;父母:任何;孩子:任何[]; }'。
angular-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[];
}
【问题讨论】:
标签: javascript node.js angularjs gruntjs typescript