Microsoft/TypeScript
Vedi su GitHubDestructuring a possibly `undefined` object not caught, throws an error at runtime
Open
#60.179 aperta il 9 ott 2024
BugDomain: check: Control FlowHelp Wanted
Metriche repository
- Star
- (48.455 star)
- Metriche merge PR
- (Merge medio 6g 17h) (9 PR mergiate in 30 g)
Descrizione
🔎 Search Terms
destructuring, Cannot destructure as it is undefined, optional chaining destructuring
🕗 Version & Regression Information
- This changed between versions ______ and _______
- This changed in commit or PR _______
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about _________
- I was unable to test this on prior versions because _______
⏯ Playground Link
💻 Code
const input: {
a?: { b?: { c: string } }
} = { a: undefined }
const { ...b } = input.a?.b
🙁 Actual behavior
No error reported by TypeScript.
🙂 Expected behavior
TypeScript should have an indicative error, since this expression might result in undefined, which cannot be destructured.
Similar to this:
Rest types may only be created from object types.(2700)
Additional information about the issue
The error in the JavaScript being ran is:
Uncaught TypeError: Cannot destructure '(intermediate value)' as it is undefined.