2017-07-13 2 views
-1

Je suis juste en train d'apprendre le type de here, à la section de surcharge de fonctions, a obtenu une erreur «indéfini», comme je l'ai dit je suis très nouveau sur TypeScript, je ne sais pas ce qui est passe et comment y remédier, s'il vous plaît aider!Une totalement rookery dans TypeScript avec surcharge de fonction

Voici l'extrait:

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"); 

Et quand je compiler et exécuter cela, la sortie comme ceci:

Jack 
undefined 
50 
Zhao 

Ce que le "non défini " il est?

+2

C'est «y», quand vous ne transmettez aucune valeur pour ce paramètre optionnel. Que signifie exactement «une colonie totale» *? – jonrsharpe

+0

'undefined' n'est pas une erreur; c'est une valeur. – Ryan

+0

@Ryan, je suis désolé, vous avez raison, je veux dire pourquoi je peux obtenir ce «indéfini». – Jack

Répondre

1

Votre correspondance de motif fonctionne bien jusqu'à ce que vous atteigniez function foo_overload(x: any, y?: any):.

Dans cette fonction, alors que vous déclarez y être en option, vous invoquez y avec console.log(y), il retourne non défini, comme dans le premier appel de fonction, vous ne l'avez pas offrir une valeur y (il n'y a rien après Jack).

J'espère que ça aide!

+1

Vous avez raison, je produis un y mais rien n'a été donné, c'est pourquoi les shows 'indéfinis'. – Jack