microsoft / microsoft/TypeScript
strictPropertyInitialization with subclasses that refine the types of properties
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.4k
- Ø Merge
- 1 T. 19 Std.
- Gemergte PRs (30 T.)
- 117
Beschreibung
TypeScript Version: 2.7.0-dev.20171226
Code
class A {
x: {y: string} = {y: 'y'};
}
class B extends A {
x: {y: string, z?: number};
}
Expected behavior:
I expected this not to warn because A#x is assignable to B#x.
Actual behavior:
index.ts(6,3): error TS2564: Property 'x' has no initializer and is not definitely assigned in the constructor.
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 minimale Unterklassenbeispiel mit aktiviertem strictPropertyInitialization mithilfe des TypeScript-Compilers zu reproduzieren. Verfolge den Typprüfpfad, der TS2564 für die verfeinerte Eigenschaft meldet, und füge anschließend einen Regressionstest hinzu, der zeigt, dass die Diagnose ausgelassen wird, wenn der Initialisierer der Basisklasse den Untertyp erfüllt; führe die relevanten Compiler-Tests aus, um zu bestätigen, dass die vorhandenen Initialisierungsprüfungen weiterhin erfolgreich sind.
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
- 38/100