为什么打字稿不会将不同文件中的一个模块聚合为单个js函数?

时间:2014-01-25 19:04:33

标签: typescript

我在两个文件中有一个模块:

file1.ts:

module foo {
export function bar1() {
    alert("1");
}
}

file2.ts:

module foo {
export function bar2() {
    alert("2");
}

}

和输出文件是:

 // out.js
 var foo;
(function (foo) {
function bar1() {
    alert("1");
}
foo.bar1 = bar1;
})(foo || (foo = {}));

var foo;
(function (foo) {
function bar2() {
    alert("2");
}
foo.bar2 = bar2;
})(foo || (foo = {}));

而不是将这两个模块聚合成单个js函数?

1 个答案:

答案 0 :(得分:1)

这就是语言运作的方式。它类似于以下代码:

var foo = 123;
foo = 456;

将此代码重写为:

应该是安全的
var foo = 456; 

但是typescript编译器不会为你做这个。类似地,编译器正在生成您要求它执行的操作。您要求module并为您生成一个。{1}}。

更新:如果您不想要这种冗余,您可以通过多种方式编写代码,其中一种方法非常简单:

var foo:{
    a?:number;
    b?:string;
} = {}


// file a 
foo.a = 123;

// file b
foo.b = '123';