将多个 TypeScript 编译成一个闭包

3

当编译(--out)包含相同模块标识符的多个*.ts文件,每个文件都包含一个类时,将创建一个*.js文件,其中每个类都被包装在自己的闭包中,并且模块的引用传递给每个闭包。

示例:

Bar.ts:

module baz {export class Bar {}}

Foo.ts:

module baz { export class Foo {}}

out.js

var baz
(function(baz){ var Bar = ... })(baz);
(function(baz){ var Foo = ... })(baz);

有没有一种方法可以将两个类包含到一个单独的文件中,以便编译器创建一个闭包,在其中声明两个类?在一个*.ts文件中放置所有类似乎是一个非常糟糕的想法。
目标是:
  1. 每个类使用一个*.ts文件
  2. 在模块的所有类中使用未导出的类
  3. 为模块提供一个清晰的接口
以下是我实际所指的Dart伪代码: baz.ts
module baz {
    part "Foo.ts";
    part "Bar.ts";
}

Foo.ts

part of "baz.ts";
export class Foo {}

Bar.ts

part of "baz.ts";
export class Bar {}

感谢阅读,
马丁

你在同一个 .ts 文件中声明的所有类都会生成一个包含所有定义类型的闭包的 .js 文件。但我不知道如何将分开的 .ts 文件编译成一个唯一的 .js 文件。这是你想要的吗? - Jone Polvora
1个回答

1
在TypeScript中,你问题的关键是第二点。如果你将模块分成多个文件,你需要导出想要对其他文件可用的类。
当然,这也意味着消费者会看到所有这些列出的类,我理解这会影响到你提供模块清晰接口的观点。鉴于约束条件,构建模块和类的答案因个人情况而异。我通常不把模块作为广泛的命名空间,而是使它们变得狭窄和具体化,所以我会有一个Ajax模块,而不是一个Communication模块,来表示不同的通信方式的不同类。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接