Skip to content

type infer from generic function #32170

Closed
@Pomar81

Description

@Pomar81

TypeScript Version: 3.5.1-3.5.2

Search Terms:
infer type from generic function

Code

type genericProps<T> = {
  abcId: string
  count: number
  flag: boolean
  className?: string
  as?: T
}


declare function genericFC<T>(props: genericProps<T>): any 

type test<T> = typeof genericFC extends <T>(props: infer P) => any ? P : never

Expected behavior:

 {
    abcId: string
    count: number
    flag: boolean
    className?: string
    as?: T
  }

Actual behavior:

{
   abcId: string
   count: number
   flag: boolean
   className?: string
   as?: unknown
 }

Playground Link: link

Related Issues:

Activity

RyanCavanaugh

RyanCavanaugh commented on Jul 2, 2019

@RyanCavanaugh
Member

This is working as expected. There's no relation between the two Ts in test's declaration; i.e. you could equally have written

type test<T> = typeof genericFC extends <U>(props: infer P) => any ? P : never

I expect what you're trying to do is refer to a specific call instantiation of a generic function, which isn't currently possible.

Pomar81

Pomar81 commented on Jul 4, 2019

@Pomar81
Author

Yes, I wanted to refer to specific call instantiation of a generic function
e.g
genericFC<'div'>

ahejlsberg

ahejlsberg commented on Jan 27, 2022

@ahejlsberg
Member

With #47607 it is possible to refer to specific instantiations of generic functions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    QuestionAn issue which isn't directly actionable in code

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @ahejlsberg@RyanCavanaugh@Pomar81@typescript-bot

        Issue actions

          type infer from generic function · Issue #32170 · microsoft/TypeScript