Microsoft/TypeScript
Vedi su GitHubDestructuring assignment with computed property name does not help narrow types as intended.
Open
#62.401 aperta il 5 set 2025
Domain: check: Control FlowHelp WantedPossible Improvement
Metriche repository
- Star
- (48.455 star)
- Metriche merge PR
- (Merge medio 6g 17h) (9 PR mergiate in 30 g)
Descrizione
🔎 Search Terms
"destructuring assignment", "computed property name", "type narrowing"
🕗 Version & Regression Information
Happen to all existing version in typescript playground.
⏯ Playground Link
💻 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