microsoft / microsoft/TypeScript
Subclass method is not allowed (TS2425) if the parent class has a property of type any with the same name
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.3k
- Ø Merge
- 2 T. 4 Std.
- Gemergte PRs (30 T.)
- 132
Beschreibung
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!
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, das Beispiel im verlinkten TypeScript Playground zu reproduzieren, und verfolge die Prüfung nach, die TS2425 für eine geerbte Eigenschaft vom Typ any im Vergleich zu einer Methode der Unterklasse meldet. Vergleiche dies mit der entsprechenden Prototypzuweisung, die im Issue beschrieben wird. Erledigt ist die Aufgabe, wenn die Klassendefinition ohne TS2425 kompiliert wird, während die relevanten Vererbungsprüfungen intakt bleiben.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- typescript
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 35/100