J'ai une classe A qui possède un accesseur pour un objet qui contient plusieurs chaînes. Le tout offre un moyen facile d'obtenir l'adresse URL d'une API Vertx.Inherit acessor dans le typecript
Mon problème est que je voudrais surcharger cette API dans une sous-classe B qui hérite de la classe A.
Quelque chose comme ça:
class A {
get api() {
return {
GET_LESSON : '/lesson/',
};
}
}
class B extends A{
get api() {
return _.extend(super.api, {
GET_CALL : '/lesson/call/',
});
}
}
Mais cela ne fonctionne pas, je reçois le erreur:
TS2340:Only public and protected methods of the base class are accessible via the 'super' keyword.
Pourquoi j'ai cette erreur? Est-ce un comportement prévu pour les accesseurs Typescript?
L'erreur indique tout. Votre api getter est privé à la classe A, donc vous ne pouvez pas y accéder dans la classe B. – realbart
@realbart http://www.typescriptlang.org/play/index.html#src=class%20A%20%7B%0D%0A % 20% 20% 20% 20public% 20get% 20api% 20()% 20% 7B% 0D% 0A% 20% 20% 20% 20% 20% 20% 20% 20 retour 20% 7B% 0D% 0A% 20 % 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20GET_LESSON% 20% 3A% 20 '% 2Flesson% 2F'% 2C% 0D% 0A% 20% 20% 20% 20% 20 % 20% 20% 20% 7D% 3B% 0D% 0A% 20% 20% 20% 20% 7D% 0D% 0A% 7D% 0D% 0A% 0D% 0A% 0D% 0Aclasse% 20B% 20extends% 20A% 7B % 0D% 0A% 20% 20% 20% 20%% 20api% 20()% 20% 7B% 0D% 0A% 20% 20% 20% 20% 20% 20% 20% 20return% 20_.extend (super.api % 2C% 20% 7B% 0D% 0A% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20GET_CALL% 20% 3A% 20 '% 2Flesson% 2Fcall% 2F'% 2C % 0D% 0A% 20% 20% 20% 20% 20% 20% 20% 7D)% 3B% 0D% 0A% 20% 20% 20% 7D% 0D% 0A% 7D –
@realbart Je pensais que chaque attribut ou La méthode était publique par défaut. Et rendre l'accesseur public en classe A n'aide pas. – Zibron