Reactjs 推断React TypeScript中2个道具之间的泛型类型

Reactjs 推断React TypeScript中2个道具之间的泛型类型,reactjs,typescript,type-inference,Reactjs,Typescript,Type Inference,我相信这是可能的,但我不太擅长TS中的高级键入,因此: 我想让一个React组件在一个道具中接受任何对象形状的数组,然后在不同的(事件函数)道具中发出相同的类型 我应该如何键入AnyGenericRow以实现我的目标?我想我需要以某种方式从数据推断出类型,然后将推断出的类型应用于onRow签名 用法示例: const rows: Array<{ foo: 'bar' }> = []; /* ... */ <Component data={rows} onRow={row =

我相信这是可能的,但我不太擅长TS中的高级键入,因此:

我想让一个React组件在一个道具中接受任何对象形状的数组,然后在不同的(事件函数)道具中发出相同的类型

我应该如何键入
AnyGenericRow
以实现我的目标?我想我需要以某种方式从
数据
推断出类型,然后将推断出的类型应用于
onRow
签名

用法示例:

const rows: Array<{ foo: 'bar' }> = [];

/* ... */

<Component data={rows} onRow={row => { 
  /* can `row` be detected as a type of { foo: 'bar' } ? */ }
} />
const行:数组=[];
/* ... */
{ 
/*能否将“row”检测为{foo:'bar'}的类型?*/}
} />
也许这是超级简单,但我发现它有点棘手,确切地知道什么样的搜索条件来找到这个

附加问题:推断出的泛型行能否扩展组件中的接口?也许只需要
&
就可以了……?

这里有:

从“React”导入React
界面道具{
数据:T[];
onRow:(row:T)=>void;
}
常量行:数组=[];
功能组件(道具:道具){
返回空
}
{
/*“row”是否可以检测为{foo:'bar}的一种类型*/
}
} />
请记住,您还可以显式设置
组件的通用参数

{
/*“row”是否可以检测为{foo:'bar}的一种类型*/
}
} />

谢谢,我怀疑这比我想象的要简单+1关于最后一个技巧–我不知道您可以直接在组件上指定类型。@MagnusBull,此功能是在TS 2.9中添加的,文档->
const rows: Array<{ foo: 'bar' }> = [];

/* ... */

<Component data={rows} onRow={row => { 
  /* can `row` be detected as a type of { foo: 'bar' } ? */ }
} />