Microsoft/TypeScript
Auf GitHub ansehenDestructuring a possibly `undefined` object not caught, throws an error at runtime
Open
#60.179 geöffnet am 9. Okt. 2024
BugDomain: check: Control FlowHelp Wanted
Repository-Metriken
- Stars
- (48.455 Stars)
- PR-Merge-Metriken
- (Durchschn. Merge 6T 17h) (9 gemergte PRs in 30 T)
Beschreibung
🔎 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.