Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Module 如何跨typescript模块片段访问模块内部变量?_Module_Typescript_Internal - Fatal编程技术网

Module 如何跨typescript模块片段访问模块内部变量?

Module 如何跨typescript模块片段访问模块内部变量?,module,typescript,internal,Module,Typescript,Internal,我有一个分为两个文件的typescript模块, tsc(版本0.9.1.1)编译了它,没有错误,生成的代码运行正常 以下是我的模块的源文件摘要: 拆分模块\u示例。ts: //file: orders.part1.ts module Orders { // first part of Orders export var msg : string; // set orders here msg = 'hello'; } //file: orders.part1.ts

我有一个分为两个文件的typescript模块, tsc(版本0.9.1.1)编译了它,没有错误,生成的代码运行正常

以下是我的模块的源文件摘要:
拆分模块\u示例。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编译器中引入了一个bug

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

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

顺便说一句,您可以通过将上面的split_module_example.ts文件粘贴到站点中来查看此行为。然后打开浏览器的调试器功能,以便查看控制台。但是,如果我删除export关键字,它将停止工作。是否有办法共享此变量,使其成为模块的专用变量?否(注释长度必须至少为15个字符),再次感谢。我成了打字稿的忠实粉丝。感谢您和您的团队使javascript工作!