TypeScript:如何从类型中提取泛型参数?

d.j*_*ick 10 typescript

假设我有类似的类型React.ComponentClass<Props>,我想引用该Props部分,但它在我当前的上下文中未命名.

为了显示:

typeof x

在这种情况下,我可以使用,Something但这不会让我直接访问该Something类型.

我想要的是这样的:

GetPropsType<typeof x>

所以我可以提取React.ComponentClass<Props>类型Props

任何相当的东西都会很棒.

Xiv*_*Xiv 15

你可以使用推断:

type TypeWithGeneric<T> = T[]
type extractGeneric<Type> = Type extends TypeWithGeneric<infer X> ? X : never

type extracted = extractGeneric<TypeWithGeneric<number>>
// extracted === number
Run Code Online (Sandbox Code Playgroud)

操场

  • 如何获得第 n 个泛型参数? (4认同)
  • 是否有这种“通用”版本,您无需了解实际的通用类?还是那不可能?我想'一般地'提取通用类型;-) (3认同)
  • 我认为现在不可能@Simon_Weaver,目前没有办法一般性地引用类型构造,因为Typescript不支持更高类型类型. (3认同)
  • 将“从不”超过“null”。 (2认同)
  • 相关打字稿问题:[允许类在其他参数类中参数化](https://github.com/microsoft/TypeScript/issues/1213) (2认同)