2012-11-06 46 views
9

我正在將很多代碼轉換爲Typescript,但是想要在我應該使用某些東西的時候獲得良好的處理。何時在TypeScript中使用類與模塊?

現在我有在模塊的一些大的命名空間:

(function (nameSpace) { 

    var privateVariables = ''; 

    function privateFunctions() { }   

    // Public methods 
    nameSpace.someMethodHere = function() { }; 

}(window.nameSpace = window.nameSpace || {})); 

我的問題是在打字稿,有沒有我只是把它們轉變成只類的任何區別/效益?或者它應該只是一個包含類(每個方法)的大模塊?

module nameSpace { 

    export class someMethodHere { 
     // etc 
    } 

    // more classes (my methods) here ?? 
} 

- 或 -

class nameSpace { 

    someMethodHere() { 
     // code 
    } 
    // more prototyped methods here 
} 

或者我應該將它們設置在同一個模塊的方式我現在有?我正在嘗試,它只是不斷給我錯誤,不知道我怎麼做nameSpace.someMethodHere裏面沒有一個類的模塊!

回答

8

這取決於。一個模塊應該是一組離散的「事物」,而不僅僅是一堆雜亂無章的類,所以如果事情看起來像是在一起,就用一個模塊對它們進行分組。我相信TypeScript團隊正在等待人們在發佈指南之前使用語言,但我想人們會發佈一個模塊,他們當前發佈的腳本 - 所以jQuery將是一個模塊,每個jQuery插件將是一個模塊,一個測試框架將是一個模塊,而一個AOP框架將是一個模塊 - 例如。

+0

同意,他們都是相當連接。我想現在我想到了,我想知道......在一個類中的所有東西(所有的方法都是原型)還是一個模塊都更有意義?我確實喜歡一個模塊至少不需要實例化 –

+18

作爲一個基準,如果你將要有多個實例與每個實例相關的數據,那麼'class'就是要走的路。如果你只是將邏輯連接的無狀態函數組合在一起,'module'就更合適。 –

+0

我100%同意@RyanCavanaugh那個。 – Fenton

6
  • 考慮使用模塊作爲Singleton(每個地方都可以訪問的一個靜態對象)的常用選項,其中常見用法是針對庫。
  • 當您需要創建此類的多個實例或者您計劃擴展此類時,請考慮使用類。

基本上模塊很適合將所有代碼打包到一個方便的全局對象中,而類可以很好地構造代碼和數據表示。

相關問題