2013-02-12 101 views
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. 提供一個清晰的接口模塊
  4. 什麼我實際上意味着

飛鏢狀的僞代碼:

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 {} 

感謝您的閱讀,

馬丁

+0

您在同一個.ts文件中聲明的所有類都將產生一個.js,並在所有定義的類型周圍使用閉包。但我不知道如何將分離的.ts文件編譯成獨特的.js文件。這是你想要的嗎? – 2013-02-16 08:06:33

回答

1

在TypeScript中,問題的關鍵點是第2點。如果將模塊分割爲多個文件,則需要將要提供給其他文件的類導出。

當然,這也意味着消費者會看到列出的所有這些類,我理解這會影響您爲模塊提供乾淨界面的觀點。根據您的具體情況,給出約束的結構化模塊和類的答案將有所不同。我傾向於不將模塊視爲廣泛的命名空間,我將它們作爲狹義和特定的模塊,因此我需要一個Ajax模塊,而不是具有不同類的Communication模塊來表示不同的通信方式。

相關問題