将多个打字稿编译成一个闭包

时间:2013-02-12 20:16:55

标签: typescript tsc

编译(--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. 为模块提供干净的界面
  4. 类似于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 {}
    

    感谢阅读,

    马丁

1 个答案:

答案 0 :(得分:1)

在TypeScript中,问题的关键点是第2点。如果将模块拆分为多个文件,则需要将要提供的类导出到其他文件中。

当然,这也意味着消费者会看到列出所有这些类,我理解这会影响您为模块提供干净界面的观点。根据您的具体情况,在给定约束的情况下构建模块和类的答案将有所不同。我倾向于不将模块视为宽名称空间,我使它们非常狭窄和具体,所以我会有一个Ajax模块,而不是具有不同类的Communication模块来表示不同的通信方式。 / p>