-
Notifications
You must be signed in to change notification settings - Fork 13k
Closed
Labels
BugA bug in TypeScriptA bug in TypeScriptFix AvailableA PR has been opened for this issueA PR has been opened for this issueRescheduledThis issue was previously scheduled to an earlier milestoneThis issue was previously scheduled to an earlier milestone
Milestone
Description
Bug Report
π Search Terms
Generic inference, destructuring, binding patterns
π Version & Regression Information
Exists in 4.3.5
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about generics
β― Playground Link
Playground link with relevant code
π» Code
declare function genericFunc<T>(): T;
const { bar } = genericFunc();
// `bar` is `any` here.
π Actual behavior
bar
is any
and T
is inferred to be { bar: any }
.
π Expected behavior
The inferred type of T
should be unknown
and there should be an error from trying to destructure it.
(Or, T
could still be inferred as { bar: any }
but then noImplicitAny
should trigger an error. This seems at a glance less desirable to me than the former, but I don't know enough how generic inference works to make a more informed recommendation. Anyways, some sort of error no matter how it happens is what would be ideal!)
Notes: see #43371 (comment) for the original context.
maclockard
Metadata
Metadata
Assignees
Labels
BugA bug in TypeScriptA bug in TypeScriptFix AvailableA PR has been opened for this issueA PR has been opened for this issueRescheduledThis issue was previously scheduled to an earlier milestoneThis issue was previously scheduled to an earlier milestone