microsoft / microsoft/TypeScript

Destructuring assignment with computed property name does not help narrow types as intended.

Offen
#62,401 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Domain: check: Control Flow Help Wanted Possible Improvement
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.3k
Ø Merge
2 T. 4 Std.
Gemergte PRs (30 T.)
132

Beschreibung

🔎 Search Terms

"destructuring assignment", "computed property name", "type narrowing"

🕗 Version & Regression Information

Happen to all existing version in typescript playground.

⏯ Playground Link

https://tsplay.dev/w1eElw

💻 Code
declare let obj: Record<string, string>

declare let cond: boolean;
declare let key: string;
let result: string | null = null;

if (cond) {
    ({ [key]: result } = obj);
    result;
//  ^?
}

if (cond) {
    ({ 'key': result } = obj);
    result;
//  ^?
}
🙁 Actual behavior

Type narrowing did not happen to the assignee variable result after the assignment ({ [key]: result } = obj);.

🙂 Expected behavior

Expecting the assignment ({ [key]: result } = obj); will narrow the assignee variable result to non-null.

Additional information about the issue

No response

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 verlinkten TypeScript Playground-Reproduktion und vergleiche den inferierten Typ von result nach der Destrukturierungszuweisung mit berechnetem Property und der Zuweisung eines Literal-Propertys. Verfolge das dabei verwendete Verhalten der Typverengung und überprüfe, dass die abgeschlossene Änderung die erwartete Non-Null-Verengung in beiden Beispielen beibehält.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
typescript
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 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.