microsoft / microsoft/TypeScript
?? and ??= behave differently when they shouldn't
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
TypeScript Version: 4.0.2, Nightly (2020-9-2)
Search Terms:
Nullish coalescing operator
Nullish never
Coalescing never
Nullish coalescing assignment
Code
According to this post usage of ?? and ??= should be equivalent in the sample code below:
const values: { a?: string[] } = { };
delete values.a;
(values.a ?? (values.a = [])).push("hello"); // error
values.a = undefined;
(values.a ?? (values.a = [])).push("hello"); // error
delete values.a;
(values.a ??= []).push("hello");
values.a = undefined;
(values.a ??= []).push("hello");
Expected behavior:
Examples with ?? and ??= should compile and behave similarly.
Actual behavior:
Examples with ?? do not compile (Argument of type 'string' is not assignable to parameter of type 'never'.(2345))
Playground Link:
link
Related Issues:
Didn't find anything similar
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
Führe zunächst das bereitgestellte TypeScript-Beispiel im verknüpften Playground aus und vergleiche, wie ?? und ??= für die optionale String-Array-Eigenschaft geprüft werden. Als erledigt gilt die Aufgabe, wenn die ??-Ausdrücke kompiliert werden und sich konsistent mit den ??=-Beispielen verhalten, mit Abdeckung sowohl gelöschter als auch ausdrücklich auf undefined gesetzter Eigenschaften.
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