microsoft / microsoft/TypeScript

Union properties like `0 | number` or `"" | string` should be discriminants in truthiness checks

Offen
#34,949 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bug Domain: check: Control Flow
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.3k
Ø Merge
1 T. 19 Std.
Gemergte PRs (30 T.)
117

Beschreibung

TypeScript Version: 3.7.2

Code

type A = { readonly [0]: 0 }
type B = { [0]: number }
declare var x: A | B;
if (x[0]) x[0] = 2;

Expected behavior:
No error will be reported

Actual behavior:
error TS2540: Cannot assign to '[0]' because it is a read-only property.

4 if (x[0]) x[0] = 2;
~

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

Beginnen Sie mit der TypeScript 3.7.2-Reproduktion im Issue und verfolgen Sie das Truthiness-Narrowing für die Union-Eigenschaftstypen 0 | number und "" | string. Erledigt ist die Aufgabe, wenn die gezeigte Zuweisung keinen Fehler erzeugt und ein Regressionstest das Verhalten abdeckt.

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
Größtenteils klar
Anfängerfreundlichkeit
42/100

Neue Issues direkt in Ihr Postfach

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