Typescript: Sintaxe lambda diferente entre o retorno do objeto primitivo e o retorno

Criado em 31 out. 2016  ·  1Comentário  ·  Fonte: microsoft/TypeScript



Versão do 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
};

Comportamento esperado:
Espero que compile bem. fn_prim deve retornar 3 quando chamado, fn_obj deve retornar { val: 3 } quando chamado.

Comportamento real:
Erro de "etiqueta não utilizada" em val:

Question

Comentários muito úteis

TypeScript segue as especificações ES e, por especificação, seu segundo exemplo é uma função de seta em que o corpo é um corpo de função envolvido em { } então val: 3 é interpretado como uma instrução rotulada com o rótulo val e declaração de expressão com a expressão 3 . Para torná-la uma função de seta que retorna um literal de objeto, você precisará envolvê-la entre parênteses:

const fn_obj = () => ({
    val: 3
});

Link relacionado: MDN: funções de seta , seção Returning object literals

>Todos os comentários

TypeScript segue as especificações ES e, por especificação, seu segundo exemplo é uma função de seta em que o corpo é um corpo de função envolvido em { } então val: 3 é interpretado como uma instrução rotulada com o rótulo val e declaração de expressão com a expressão 3 . Para torná-la uma função de seta que retorna um literal de objeto, você precisará envolvê-la entre parênteses:

const fn_obj = () => ({
    val: 3
});

Link relacionado: MDN: funções de seta , seção Returning object literals

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

blendsdk picture blendsdk  ·  3Comentários

jbondc picture jbondc  ·  3Comentários

dlaberge picture dlaberge  ·  3Comentários

Zlatkovsky picture Zlatkovsky  ·  3Comentários

uber5001 picture uber5001  ·  3Comentários