Typescript Generics erweitern Klasse und Schnittstelle

7

Ich habe eine Typescript-Klasse, die ein generisches Element enthält, das eine andere Klasse erweitern und eine Schnittstelle implementieren muss. Hier ist ein Beispiel

%Vor%

Dies ist die Art von Syntax, die ich anderswo gesehen habe, aber gibt es eine Möglichkeit, dies in Typescript zu tun?

bearbeiten: Versuche das folgende in den Spielplatz einzufügen: ​​Ссылка

%Vor%

Bearbeiten 2: Beantworten und Begründen

(Ich entschuldige mich, das erste Beispiel hatte ein paar Fehler!) Ich habe die richtige Antwort unten markiert, obwohl es wahrscheinlich ein paar Hinweise benötigt, wie in diesem GitHub-Thema beschrieben ( Ссылка )

Mit dem folgenden Code können Sie sehen, dass die Methodik funktioniert.

Das einzige, was noch zu sagen ist, dass der Versuch, implement der Schnittstelle von einer Klasse, die die Basisklasse nicht erweitert, zu versuchen, ebenfalls fehlschlägt. Da die Typoskriptprüfung jedoch basierend auf der Struktur des Objekts ist, wird sie erfolgreich ausgeführt, wenn Sie der Klasse die Eigenschaft name manuell hinzufügen.

Dies ist auch der Grund, warum es mit der ModelCorrect , die extends , aber nicht implements erreicht.

    
Dave Taylor 02.02.2015, 08:32
quelle

3 Antworten

3

Es sieht so aus, als ob dies der einzige Weg ist, den ich finden kann. Nicht perfekt sauber, aber es macht das Richtige.

%Vor%

Hier ist ein Screenshot vom Spielplatz, der bestätigt, dass es funktioniert:

Bearbeiten: Die richtige Problemumgehung wurde hinzugefügt.

    
dignifiedquire 02.02.2015, 09:13
quelle
14

Typescript ist nicht so restriktiv wie Java oder C #. Sie können also Folgendes tun:

%Vor%

Bearbeiten: In TypeScript 1.6 können Sie Schnitttypen verwenden:

%Vor%     
Magu 02.02.2015 12:38
quelle
1

Im Beispiel fehlt, was T sein wird:

Im folgenden Beispiel habe ich eine Implementierung für T hinzugefügt, die als generische Einschränkung verwendet werden kann.

%Vor%     
Martijn 02.02.2015 21:29
quelle

Tags und Links