Angenommen, ich habe den folgenden Typ:
type Event = {
name: string;
dateCreated: string;
type: string;
}
Ich möchte diesen Typ jetzt erweitern, dh
type UserEvent extends Event = {
UserId: string;
}
Das funktioniert nicht. Wie kann ich das machen?
javascript
typescript
Kousha
quelle
quelle
type
Schlüsselwort wird verwendet, um Typaliasnamen zu definieren , keine Schnittstellen oder Klassen.Antworten:
Das Schlüsselwort
extends
kann nur für Schnittstellen und Klassen verwendet werden.Wenn Sie nur einen Typ mit zusätzlichen Eigenschaften deklarieren möchten, können Sie den Schnittpunkttyp verwenden :
UPDATE für TypeScript 2.2 ist es jetzt möglich, eine Schnittstelle zu haben, die den objektähnlichen Typ erweitert , wenn der Typ einige Einschränkungen erfüllt:
Es funktioniert nicht umgekehrt -
UserEvent
muss als Schnittstelle deklariert werden, nicht als Schnittstelle,type
wenn Sieextends
Syntax verwenden möchten .Und es ist immer noch unmöglich,
extend
mit beliebigen Typen zu arbeiten - zum Beispiel funktioniert es nicht, wennEvent
es sich um einen Typparameter ohne Einschränkungen handelt.quelle
interface A<T> extends B<T> {blar}
Eine Schnittstelle kann einen Objekttyp oder eine Schnittmenge von Objekttypen nur mit statisch bekannteninterface Identifiable<T> extends T { id: string }
mir Fehler "Eine Schnittstelle kann nur einen Objekttyp oder Schnittpunkt von Objekttypen mit statisch bekannten Mitgliedern erweitern.ts (2312)"Sie können Typen schneiden:
Irgendwo in Ihrem Code können Sie jetzt Folgendes tun:
quelle
Was Sie erreichen wollen, ist gleichbedeutend mit
Die Art und Weise, wie Sie die Typen definiert haben, ermöglicht keine Angabe der Vererbung. Sie können jedoch mithilfe von Schnittpunkttypen etwas Ähnliches erreichen, wie Artem hervorhob .
quelle
interface
wenn ich eigentlich atype
Möglicherweise ist der unten stehende Ansatz für jemanden mit TS mit Reaktionen hilfreich
quelle