TypeScript-Version: 2.0.3 / nightly (2.1.0-dev.201xxxxx)
Code
// A *self-contained* demonstration of the problem follows...
const fn_prim = () => 3;
const fn_obj = () => {
val: 3
};
Erwartetes Verhalten:
Ich erwarte, dass es gut kompiliert wird. fn_prim
sollte beim Aufruf 3 zurückgeben, fn_obj
sollte beim Aufruf { val: 3 }
.
Tatsächliches Verhalten:
Fehler "Unbenutztes Etikett" bei val:
TypeScript folgt der ES-Spezifikation und gemäß der Spezifikation ist Ihr zweites Beispiel eine Pfeilfunktion, bei der body ein Funktionsrumpf ist, der in {
}
sodass val: 3
als beschriftete Anweisung mit dem Label val
interpretiert wird 3
. Um daraus eine Pfeilfunktion zu machen, die ein Objektliteral zurückgibt, müssen Sie es in Klammern setzen:
const fn_obj = () => ({
val: 3
});
Verwandter Link: MDN: Pfeilfunktionen , Abschnitt Returning object literals
Hilfreichster Kommentar
TypeScript folgt der ES-Spezifikation und gemäß der Spezifikation ist Ihr zweites Beispiel eine Pfeilfunktion, bei der body ein Funktionsrumpf ist, der in
{
}
sodassval: 3
als beschriftete Anweisung mit dem Labelval
interpretiert wird3
. Um daraus eine Pfeilfunktion zu machen, die ein Objektliteral zurückgibt, müssen Sie es in Klammern setzen:Verwandter Link: MDN: Pfeilfunktionen , Abschnitt
Returning object literals