2013-06-11 24 views
4

我有下面這個問題的例子。在打字稿0.9我似乎能夠調用重載方法的最後簽名:TypeScript 0.9過載可調用

class Test { 
    method(...names: string[]) : void; 
    method(names: string[]) : void { 

    } 
} 

var x= new Test(); 

x.method('One', 'Two', 'Three'); 
x.method(['One', 'Two', 'Three']); 

在打字稿0.8.4你必須指定第三個特徵,即:

class Test { 
    method(...names: string[]) : void; 
    method(names: string[]) : void; 
    method(names: any) : void { 

    } 
} 

var x= new Test(); 

x.method('One', 'Two', 'Three'); 
x.method(['One', 'Two', 'Three']); 

不該」最後的簽名是隱藏的? (因爲它最有可能包含any類型等的超廣義簽名)。

+0

什麼是最終簽名? –

+0

最後的簽名是具有實現的那個簽名(即不是以';'結尾的簽名)。所以在最後一個例子中,最後的簽名是'method(names:any):void {',其餘的都是超載簽名。 – Fenton

回答

2

0.8.x行爲是正確的;我們現在在0.9的迴歸中已經在開發分支中修復了。實現簽名確實是不可見的。

+1

破解 - 謝謝。 – Fenton