Version TypeScript : 2.0.3 / tous les soirs (2.1.0-dev.201xxxxx)
Code
// A *self-contained* demonstration of the problem follows...
const fn_prim = () => 3;
const fn_obj = () => {
val: 3
};
Comportement prévisible:
Je m'attends à ce qu'il compile bien. fn_prim
doit renvoyer 3 lorsqu'il est appelé, fn_obj
doit renvoyer { val: 3 }
lorsqu'il est appelé.
Comportement réel :
Erreur "Étiquette non utilisée" sur val:
TypeScript suit la spécification ES et par spécification, votre deuxième exemple est une fonction de flèche où body est un corps de fonction enveloppé dans {
}
donc val: 3
est interprété comme une instruction étiquetée avec l'étiquette val
et instruction d'expression avec l'expression 3
. Pour en faire une fonction fléchée qui renvoie un objet littéral, vous devrez l'envelopper entre parenthèses :
const fn_obj = () => ({
val: 3
});
Lien connexe : MDN : Fonctions fléchées , section Returning object literals
Commentaire le plus utile
TypeScript suit la spécification ES et par spécification, votre deuxième exemple est une fonction de flèche où body est un corps de fonction enveloppé dans
{
}
doncval: 3
est interprété comme une instruction étiquetée avec l'étiquetteval
et instruction d'expression avec l'expression3
. Pour en faire une fonction fléchée qui renvoie un objet littéral, vous devrez l'envelopper entre parenthèses :Lien connexe : MDN : Fonctions fléchées , section
Returning object literals