Comment implémenter des équals dans Typescript?
J'ai essayé quelques méthodes, les deux ne fonctionnaient pas.Typescript est égal à
Option 1:
abstract class GTreeObject<T>{
abstract equals(obj: T): boolean;
}
class GNode extends GTreeObject<GNode>{
public equals(obj: GNode){
//Implement
}
}
Résultats dans: Type générique 'GNode' exige 1 argument de type (s).
Option 2 impliquerait la coulée lors de l'exécution, mais comment faire le casting ?:
abstract class GTreeObject{
abstract equals(obj: Object): boolean;
}
class GNode extends GTreeObject{
//How to cast Object to GNode??
public equals(obj: Object){
//Implement
}
}
Comment résoudre de manière fiable?
Désolé pour les tracas. Cela semble fonctionner pour GNode, mais lors de l'implémentation de GTree: 'la classe GTree extends GTreeObject ' cela semble aboutir à une erreur: 'Le type générique 'GTree ' nécessite 1 argument (s) type.' Y at-il un problème en utilisant deux types génériques dans la définition de classe (prendre + passer un générique)? –
Trace
Fyi Je passe un GNode au GTree comme type générique. – Trace
@KimGysen: Vous devez être cohérent sur les types, c'est tout. :-) 'GTree' plutôt que 'GTree', voir la mise à jour ci-dessus. –