Skip to content

Generic inference from LHS of assignment when destructuring can lead to unexpected anys Β #45074

Closed

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.

Activity

  1. andrewbranch commented on Jul 21, 2021

    @andrewbranch
    Member

    The inference of { bar: any } may or may not be avoidable without breaking a lot of other inferences, but it should at least error under noImplicitAny.

  2. andrewbranch commented on Jul 21, 2021

    @andrewbranch
    Member

    Related: #43605

  3. jkillian commented on Oct 1, 2021

    @jkillian
    Author

    Related to the discussion in #46012 I believe

  4. andrewbranch commented on Oct 4, 2021

    @andrewbranch
    Member

    Yeah. Probably not going to fix the noImplicitAny error for 4.5 because I want to investigate making this whole pattern an error in the 4.6 timeframe, as discussed in that design meeting.

  5. jkillian commented on May 24, 2022

    @jkillian
    Author

    Love that this is fixed, thanks Andrew Branch (@andrewbranch)!

  6. locked as resolved and limited conversation to collaborators on Oct 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

BugA bug in TypeScriptFix AvailableA PR has been opened for this issueRescheduledThis issue was previously scheduled to an earlier milestone

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions