我应该如何跨打字稿模块片段访问模块内部变量?

时间:2014-02-11 23:11:51

标签: module typescript internal

我有一个分为两个文件的打字稿模块, 和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编译器中是否有错误。

  • 如果我做错了什么,在模块片段中引用模块内部变量的正确方法是什么?
  • 如果编译器错误,是否有解决方法?

1 个答案:

答案 0 :(得分:0)

您应该只在一个位置声明变量。只需从除一个模块之外的所有模块中删除var声明,一切都将按预期工作。