是否可能根据键dataIndex
的值获取动态类型(使用泛型创建动态区分联合类型)?
type EntityList<EntityType> = {
dataIndex: keyof EntityType;
render?: (value: any /*bad*/, record: EntityType) => void;
}[]
// Some dynamic type
type Issue = {
id: number;
name: string;
description?: string;
flag?: boolean;
};
const arr:EntityList<Issue> = [
{ dataIndex: 'id', render: (id, record) => {
console.log({id, record}); } // id should be number
},
{ dataIndex: 'name', render: (name, record) => {
console.log({name, record}); } // name should be string
},
{ dataIndex: 'flag', render: (flag, record) => {
console.log({flag, record}); } // flag should be boolean
},
]
答复:
type EntityList<EntityType> = {
[K in keyof EntityType]: {
dataIndex: K,
render?: (value: EntityType[K], record: EntityType) => void
}
}[keyof EntityType][]
谢谢@Tobias S.