2017-02-17 1 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 
Смежные вопросы