2017-07-13 1 views
-1

Ich lerne gerade TypeScript von here, im Abschnitt Funktionsüberladungen, bekam einen 'undefined' Fehler, Wie ich schon sagte ich bin sehr neu auf TypeScript, weiß nicht, was ist los und wie es zu beheben, bitte helfen Sie! HierEine völlig rookery in TypeScript mit Funktionsüberlastung

ist das Snippet:

function foo_overload(s: string): void; 
function foo_overload(n: number, s: string): void; 
function foo_overload(x: any, y?: any): void { 
    console.log(x); 
    console.log(y); 
} 

foo_overload("Jack") 
foo_overload(50, "Zhao"); 

Und wenn ich kompilieren und diese ausführen, die Ausgabe wie folgt aus:

Jack 
undefined 
50 
Zhao 

Was die "undefined" es ist?

+2

Es ist "y", wenn Sie keinen Wert für diesen optionalen Parameter übergeben. Was genau bedeutet "eine total rookery" *? – jonrsharpe

+0

'undefined' ist kein Fehler; es ist ein Wert. – Ryan

+0

@Ryan, es tut mir leid, du hast Recht, ich meine, warum ich das 'undefined' bekommen kann. – Jack

Antwort

1

Ihr Mustervergleich funktioniert gut, bis Sie function foo_overload(x: any, y?: any): erreichen.

In dieser Funktion, während Sie y erklären optional zu sein, rufen Sie y mit console.log(y), so dass es wieder nicht definiert, wie in dem ersten Funktionsaufruf, Sie y Wert nicht bieten (es gibt nichts nach Jack).

Hoffe es hilft!

+1

Sie haben Recht, ich gebe y aus, aber es wurde nichts angegeben, deshalb erscheint 'undefined'. – Jack