如何在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
相关产品推荐
相关产品推荐

