microsoft / microsoft/TypeScript
Subclass method is not allowed (TS2425) if the parent class has a property of type any with the same name
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.3k
- Merge moyen
- 2 j 4 h
- PR mergées (30 j)
- 132
Description
TypeScript appears to treat class methods as something fundamentally different from a class prototype property of type function. This is not in agreement with the standard semantics of ES6.
TypeScript Version: all versions, as far as I have been able to test.
Search Terms: method member property any parent class subclass
Code
class Super {
prop: any;
}
class Derived extends Super {
prop() {}
}
Expected behavior: should compile without a problem. Note that by the ES6 standard, the above definition of Derived is equivalent to the following, which TypeScript compiles without a problem:
class Derived extends Super {}
Derived.prototype.prop = function(){};
Actual behavior:
Error TS2425: Class 'Super' defines instance member property 'prop', but extended class 'Derived' defines it as instance member function.
Related Issues: I didn't find similar issues, although I started by looking for issues requesting for the ability to disable particular errors (TS2425 in this case). There are several (closed) issues in which such an ability is requested or suggested, but I believe the proper solution would be to bring TypeScript in agreement with ES6. After all, it claims to be a superset!
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par reproduire l’exemple dans le TypeScript Playground lié, puis suivez la vérification qui signale TS2425 pour une propriété héritée de type any par rapport à une méthode de sous-classe. Comparez cela avec l’affectation de prototype équivalente décrite dans l’issue. Le travail est terminé lorsque la définition de la classe se compile sans TS2425, tandis que les vérifications d’héritage pertinentes restent intactes.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- typescript
- Domaine
- compilers
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 35/100