Microsoft/TypeScript
View on GitHubDestructuring assignment with computed property name does not help narrow types as intended.
Open
#62,401 opened on Sep 5, 2025
Domain: check: Control FlowHelp WantedPossible Improvement
Description
๐ 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