[英]Can typescript assign index-based generic types from a union in React?
我有一個將通用類型應用於道具的 React 組件。 下面是一個簡化的例子:
interface Props<T> {
data: T
}
const MyComponent = <T,>({ data }: Props<T>) => <div /> // output not important
假設我想創建一個組件MyGenericList
,它迭代一個值數組(每個基於索引的值可能是不同的類型)並呈現MyComponent
。
如何鍵入MyGenericList
以便MyComponent
的每次迭代都根據基於索引的值的類型進行鍵入? 這是我到目前為止所做的,但不起作用:
interface Props<T> {
data: (keyof T[])[];
}
const MyGenericList = <T,>({data}: Props<T>) => {
return (
<>{data.map(d => <MyComponent<how to get index-based generic typing of 'd' here?> data={d} /></>
);
}
MyGenericList
的理想消費是這樣的:
<MyGenericList<string | number | string[]> data={['someString', 45, ['string', 'string2']} />
我能夠通過這樣做來完成這項工作:
interface Props<T> { data: T[][] };
const MyGenericList = <T,>({ data }: Props<T>) => (
<>{data.map(d => <MyComponent<typeof d[0]> /> )}</>
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.