2017-02-17 63 views
1

我延長了數類,如下所示:是否可以在打字稿中爲接口函數提供默認參數?

interface Number { 
    evolution(now: number, before: number): string; 
} 


Number.prototype.magnitude = function(d=1, suffix="") { 
    //… 
} 

,我喜歡提供默認參數。

,但沒有明顯的參數屁股使用時如下:

label = "÷ " + show.magnitude(); 

我得到一個錯誤「提供的參數不匹配簽名」

+0

相關:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain# Bad_practice_Extension_of_native_prototypes – Paleo

回答

0

你需要告訴打字稿編譯器的參數optional

在JavaScript中,每一個參數是可選的,用戶可能會離開他們關閉,因爲他們認爲合適的。當他們這樣做時,他們的價值是不確定的。我們可以通過在TypeScript中添加一個?到我們希望成爲可選參數的結尾。

這是類似於你想要完成的一個例子:

interface ISum { 
    (baz?: number, buz?: number): number; 
} 

let sum: ISum = (baz = 1, buz = 2) => { 
    return baz + buz; 
} 

console.log(sum()); //Console: 3 
console.log(sum(2)); //Console: 4 
console.log(sum(2, 7)); //Console: 9 
相關問題