microsoft / microsoft/TypeScript
Enforce definite initialization of `static` members
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.3k
- Ø Merge
- 1 T. 19 Std.
- Gemergte PRs (30 T.)
- 117
Beschreibung
Is there some clever reason why TSC can't check this (maybe... related to semantics of JS inheritance?)?
TypeScript Version: 3.2.0-dev.20181011
Search Terms: strictPropertyInitialization, static, initialized, uninitialized, assigned, property
Code
class A {
static s: number
a() {
A.s * 3 // Should be a compile error
}
}
A.s * 7 // Should be an compile error
Expected behavior: Both lines should produce compile errors.
Actual behavior: Both lines result in runtime exceptions.
Related Issues:
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
In der Issue wird keine Quelldatei und kein Test genannt. Reproduziere das Verhalten von TypeScript 3.2 mithilfe des bereitgestellten Playground-Links und des Klassenbeispiels und untersuche anschließend, wie der Compiler strictPropertyInitialization und statische Member behandelt. Als erledigt gilt die Aufgabe, wenn beide Lesezugriffe auf das nicht initialisierte statische Member zu Kompilierungsfehlern führen, ohne gültige Vererbungs- oder Initialisierungssemantik zu beeinträchtigen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- typescript
- Bereich
- compilers
- Issue-Typ
- Feature
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100