【发布时间】:2014-02-11 23:11:50
【问题描述】:
我有一个打字稿模块,分为两个文件, 和tsc(0.9.1.1版)编译无误,生成的代码运行正常。
以下是我的模块源文件的摘要:
split_module_example.ts:
//file: orders.part1.ts
module Orders { // first part of Orders
export var msg : string;
// set orders here
msg = 'hello';
}
//file: orders.part1.ts
module Orders { // second part of Orders
export var msg : string;
// reference orders here
console.log('orders=' + msg);
}
编译器生成这个 javascript,我觉得它是正确的:
//file: orders.part1.ts
var Orders;
(function (Orders) {
Orders.msg;
Orders.msg = 'hello';
})(Orders || (Orders = {}));
//file: orders.part1.ts
var Orders;
(function (Orders) {
Orders.msg;
// reference orders here
console.log('orders=' + Orders.msg);
})(Orders || (Orders = {}));
我刚刚将我的 TypeScript 编译器从 0.9.1.1 升级到 0.9.5.0。
但是现在当我运行 tsc 时:
tsc --out split_module_example.js split_module_example.ts
它发出此错误:
split_module_example.ts(9,16): error TS2000: Duplicate identifier 'msg'.
但是,代码仍然可以正常运行。
我想知道是我做错了什么,还是 0.9.5.0 编译器中引入了错误。
- 如果我做错了什么,跨模块片段引用模块内部变量的正确方法是什么?
- 如果编译器出错,是否有解决方法?
【问题讨论】:
-
顺便说一句,您可以通过将上面的 split_module_example.ts 文件粘贴到 TypeScript Play 站点来查看此行为。然后打开浏览器的调试器功能,这样就可以看到控制台了。
标签: module typescript internal