2013-04-01 52 views
4

TypeScript是不是使用類的揭示模塊模式?我期望這段代碼有不同的結果。TypeScript是不是使用類的揭示模塊模式?

class Test { 

    private privateProperty: any; 

    public publicProperty: any;  
} 

產生這樣的:

var Test = (function() { 
    function Test() { } 
    return Test; 
})(); 

我希望這樣的事情:

var test = (function(){ 
    var privateProperty; 
    var publicProperty; 

    return { 
     publicProperty: publicProperty; 
    }; 

})(); 
+0

不,不是。 'private' /'public'檢查只是由編譯器完成的,並不影響生成的代碼。 (但這只是一個猜測而已'':)')儘管如此,你的第二個例子並不正確。它甚至不會返回一個函數。 – Ryan

+1

'module'的codegen與您發佈的內容最爲相似 –

+0

@minitech:不,它不返回函數,它返回對象字面量。它被稱爲顯示模塊模式。看到這裏:http://stackoverflow.com/questions/5647258/how-to-use-revealing-module-pattern-in-javascript – epitka

回答

8

RMP不適合基於類的設計。 module你想要做什麼:

module myMod { 
    var x = 31; 
    export var y = x + 15; 
} 

生成:

var myMod; 
(function (myMod) { 
    var x = 31; 
    myMod.y = x + 15; 
})(myMod || (myMod = {})); 

突出特點在這裏:

  • 私人表演與封閉拍攝
  • 公共成員是可見的的自己的屬性對象
  • 該對象創建於IIFE
+0

我認爲打字稿中的「class」與我認爲c#中的一個類相關,意思是私人和公共成員等,而模塊更像是一個命名空間 – epitka

+0

這是正確的 –