microsoft / microsoft/TypeScript

strictPropertyInitialization with subclasses that refine the types of properties

Offen
#20,911 4 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

In Discussion Suggestion
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

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Ö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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.