2013-03-18 61 views
3

說明書提到下面的函數將被用於擴展名:打字稿繼承功能不相同文檔

var __extends = this.__extends || function(d, b) { 
    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; 
    function f() { this.constructor = d; } 
    f.prototype = b.prototype; 
    d.prototype = new f(); 
} 

然而目前所產生的功能是:

var __extends = this.__extends || function (d, b) { 
    function __() { this.constructor = d; } 
    __.prototype = b.prototype; 
    d.prototype = new __(); 
}; 

這打破靜態繼承:

class A{ 
    fooMem=10; 
    static fooStat=10; 
} 
class B extends A{}; 

var b = new B(); 
alert(b.fooMem.toString()); 
alert(B.fooStat.toString()); 

Try It

如果哪個功能是用來提到的文檔擴展將工作:Test

有人知道爲什麼不使用的文檔中提到的功能的原因嗎?

+0

http://typescript.codeplex.com/workitem/825 – basarat 2013-03-18 04:12:19

+0

打字稿編譯器不認爲類'B'有一個靜態成員'fooStat' - 即看起來看起來不正確,但生成的JavaScript與編譯器認爲至少相符。 – MiMo 2013-03-18 14:01:54

+1

感謝您在此期間爲我們識別並提供手動解決方案。這讓我發瘋。 – ObjectType 2013-04-12 15:44:39

回答