我有以下型別
type DataTableCol<T, K extends keyof T> = {
title: string;
key: K;
render?: (value: T[K]) => ReactElement;
};
我需要創建另一種型別,DataTableRow<T>從它派生。從type MyData = { name: string; value: number; },它將具有以下形式:
type DataTableRow<MyData> = (DataTableCol<MyData, 'name'> | DataTableCol<MyData, 'value'>)[]
它基本上是一個新聯合型別的陣列,為每個 keyof T 映射,我想使用泛型,因為這段代碼是可重用的。這可能嗎?
uj5u.com熱心網友回復:
您可以使用分布式條件型別:
type DataTableCol<T, K extends keyof T> = {
title: string;
key: K;
render?: (value: T[K]) => any;
};
type Distribute<T, K> = K extends keyof T ? DataTableCol<T, K> : never;
type DataTableRow<T> = (Distribute<T, keyof T>)[];
type MyData = { name: string; value: number; };
type Foo = DataTableRow<MyData>;
// (DataTableCol<MyData, "name"> | DataTableCol<MyData, "value">)[]
操場
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/427847.html
上一篇:launchMode(啟動模式)
