Typescript: Lambda-Syntax unterscheidet sich zwischen zurückgegebenem Primitiv und zurückgegebenem Objekt returning

Erstellt am 31. Okt. 2016  ·  1Kommentar  ·  Quelle: microsoft/TypeScript



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:

Question

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

>Alle Kommentare

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

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen