typings.ts
type EnumFieldType = "number" | "input" | "select";
export interface INumber {
value: number;
...
}
export interface IInput {
value: string;
...
}
export interface ISelect {
value: string[];
...
}
export interface IItem {
type: EnumFieldType | "custom";
// 根据type的值,智能推导 fieldProps 为对应的 INumber、IInput、ISelect
fieldProps?: unknown;
}
export interface IProps {
name: string;
data: IItem[];
}
index.tsx
const data:IProps={
name:'components',
data:[{
type:'number',
// 这里应该智能推导为 INumber
fieldProps:{}
},{
type:'input',
// 这里应该智能推导为 IInput
fieldProps:{}
},{
type:'select',
// 这里应该智能推导为 ISelect
fieldProps:{}
}];
}
想要的结果:根据type的值,智能推导 fieldProps 为对应的 INumber、IInput、ISelect
需要把IItem声明为union type
https://www.typescriptlang.or...