Typescript: La sintaxis de Lambda es diferente entre devolver un objeto primitivo y devolver un objeto

Creado en 31 oct. 2016  ·  1Comentario  ·  Fuente: microsoft/TypeScript



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:

Question

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

>Todos los comentarios

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

¿Fue útil esta página
0 / 5 - 0 calificaciones