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:
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
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ãoval: 3
é interpretado como uma instrução rotulada com o rótuloval
e declaração de expressão com a expressão3
. Para torná-la uma função de seta que retorna um literal de objeto, você precisará envolvê-la entre parênteses:Link relacionado: MDN: funções de seta , seção
Returning object literals