You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取定义了类型参数的React组件的Props类型

你写的 TMyComponent<number> 语法需要 TS 4.7 及以上版本支持「泛型函数类型实例化」特性才能生效,低于该版本的TS无法识别该写法。而 React.ComponentProps 本质就是提取组件函数的第一个入参类型,我们可以直接用更底层的类型语法实现需求。

方案1:TS 4.7及以上版本(推荐)

直接通过 Parameters 工具类型提取实例化后泛型组件的第一个入参即可:

type MyDesiredType = Parameters<TMyComponent<number>>[0]
// 最终得到的类型为:{ foo: string; bar: number }

该写法和你最初的思路完全一致,只是把 React.ComponentProps 替换成了更底层的 Parameters 语法,因为部分版本的 React.ComponentProps 对泛型实例化后的函数类型兼容不佳。

方案2:兼容低版本TS

如果你的项目TS版本低于4.7,无法直接实例化泛型函数类型,可以自定义通用工具类型实现提取:

// 定义通用工具类型,第二个参数传入你要指定的泛型类型
type ExtractGenericComponentProps<T, P> = 
  T extends <U = any>(props: infer R) => any 
    ? Omit<R, 'bar'> & { bar: P }
    : never

// 调用工具类型得到目标类型
type MyDesiredType = ExtractGenericComponentProps<TMyComponent, number>
// 最终得到的类型为:{ foo: string; bar: number }

如果需要适配更多不同props结构的泛型组件,修改工具类型中的字段映射规则即可。


内容的提问来源于stack exchange,提问作者aryzing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 15:15:02