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

如何在TypeScript泛型中通过对象属性获取类型

如何从泛型中通过对象属性获取类型

你遇到的报错是因为泛型T没有类型约束,TypeScript无法确定它一定包含data属性。只需给泛型添加约束,就能正确提取属性对应的类型。

修复后的代码示例

type A = {data:string, name: string};

// 给泛型T添加约束,确保它包含data属性
interface B<T extends { data: unknown }> {
  data: T['data'] // 现在可正确推断为string(当传入A时)
  // 其他属性...
}

// 使用示例:传入符合约束的类型A
type BInstance = B<A>;
// BInstance['data'] 的类型为 string

额外说明

  • 若需要更严格的约束,比如要求T必须是A的子类型,可把约束改为T extends A
  • 提取多个属性类型的逻辑一致,比如要获取name的类型,可写name: T['name']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:15:43