2017-02-17 1 views
1

erweitere ich die Klasse Nummer wie folgt:Ist es möglich, Standardparameter für Schnittstellenfunktionen in Typoskripten bereitzustellen?

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


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

Und Ich mag Standardparameter zur Verfügung zu stellen.

Aber wenn es ohne expliziten Parameter ass verwendet folgt:

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

ich einen Fehler bekam „Die gelieferten Parameter nicht übereinstimmen Signatur“

+0

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

Antwort

0

Sie müssen den Typoskript Compiler sagen, dass die Parameter optional:

In JavaScript ist jeder Parameter optional, und die Benutzer sie weglassen können, wie sie für richtig halten. Wenn sie es tun, ist ihr Wert nicht definiert. Wir können diese Funktionalität in TypeScript durch Hinzufügen eines? Am Ende der Parameter wollen wir optional sein.

Hier ist ein Beispiel ähnlich dem, was Sie erreichen möchten:

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 
Verwandte Themen