Versión de TypeScript: 2.0.3 / nightly (2.1.0-dev.201xxxxx)
Código
// A *self-contained* demonstration of the problem follows...
const fn_prim = () => 3;
const fn_obj = () => {
val: 3
};
Comportamiento esperado:
Espero que se compile bien. fn_prim
debe devolver 3 cuando se llama, fn_obj
debe devolver { val: 3 }
cuando se llama.
Comportamiento real:
Error "Etiqueta no utilizada" en val:
TypeScript sigue la especificación ES y, por especificación, su segundo ejemplo es una función de flecha donde body es un cuerpo de función envuelto en {
}
por lo que val: 3
se interpreta como una declaración etiquetada con la etiqueta val
y declaración de expresión con expresión 3
. Para que sea una función de flecha que devuelva un objeto literal, deberá envolverlo en parens:
const fn_obj = () => ({
val: 3
});
Enlace relacionado: MDN: Funciones de flecha , sección Returning object literals
Comentario más útil
TypeScript sigue la especificación ES y, por especificación, su segundo ejemplo es una función de flecha donde body es un cuerpo de función envuelto en
{
}
por lo queval: 3
se interpreta como una declaración etiquetada con la etiquetaval
y declaración de expresión con expresión3
. Para que sea una función de flecha que devuelva un objeto literal, deberá envolverlo en parens:Enlace relacionado: MDN: Funciones de flecha , sección
Returning object literals