microsoft / microsoft/TypeScript

Can't destruct a Partial<T> into T that uses default values

Offen
#42,053 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

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

Beschreibung

TypeScript Version: 4.2.0-dev.20201219

Search Terms: Destructuring with partial and default value

Code

type T = {a: number};
const t: Partial<T> = {};
const {a = 10}: T = t;

Expected behavior:

This should be allowed. For each prop with a default value, the undefined type should be Exclude'd from the source object.

Actual behavior:

Throws:

Type 'Partial<T>' is not assignable to type 'T'. Types of property 'a' are incompatible. Type 'number | undefined' is not assignable to type 'number'. Type 'undefined' is not assignable to type 'number'.

Playground Link:
https://www.typescriptlang.org/play?ts=4.2.0-dev.20201219#code/C4TwDgpgBAKlC8UDeBDAXFAdgVwLYCMIAnAXwG4BYAKAGMB7TAZ2CmAwAUUjgBLFAGwA8MAHwJk5avSYtU4gIwAGEhjiJgZIA
Related Issues:

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 mit der bereitgestellten TypeScript Playground-Reproduktion und vergleiche das erwartete und das tatsächliche Verhalten der Destrukturierungszuweisung. Das Issue nennt keine Quelldateien oder Tests, daher verfolge den Type-Checking-Pfad für Destrukturierung mit einem Standardwert und Partial. Als erledigt gilt die Aufgabe, wenn das Beispiel akzeptiert wird und dabei die beabsichtigte Typsicherheit erhalten bleibt, mit einer Abdeckung für diesen Fall.

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
35/100

Neue Issues direkt in Ihr Postfach

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