Dies
const { foo: IFoo[] } = bar;
und das
const { foo: Array<IFoo> } = bar;
wird vernünftigerweise einen Fehler verursachen.
Und das
const { foo: TFoo } = bar;
wird nur TFoo
Eigentum zerstören .
Wie können Typen für destrukturierte Objekteigenschaften angegeben werden?
typescript
destructuring
Estus Flask
quelle
quelle
bar
trotzdem abzuleiten?Antworten:
Es stellt sich heraus, dass es möglich ist, den Typ nach
:
für das gesamte Destrukturierungsmuster anzugeben :Was in Wirklichkeit nicht besser ist als einfach alt
quelle
{foo}
aber kein Wert. Dies wird üblicherweise als "Dekonstruktionszuweisungsmuster" bezeichnet. Was Sie hier sehen, ist eine spezielle TypeScript-Funktion, mit der Typen solchen Mustern zugeordnet werden können.let x, y, z: string
dem, für den anscheinendz
nur der Typ angegeben ist . Ich habe die Antwort aktualisiert.Ich bin eindeutig etwas spät zur Party, aber:
Die Arten von Eigenschaften
name
undage
richtig geschlossen werden sollenstring
undnumber
jeweils.quelle
Ein Follow-up zu meiner eigenen Frage.
Für Objekteigenschaften müssen keine Typen angegeben werden, da sie aus einem zerstörten Objekt abgeleitet werden.
Wenn man bedenkt, dass
bar
richtig geschrieben wurde, wird derfoo
Typ abgeleitet:Auch wenn
bar
es nicht richtig eingegeben wurde (any
oderunknown
), kann sein Typ bestätigt werden:quelle