// 定义一个泛型来处理动态属性的对象
type DynamicObject = {
[key: string]: string;
};
// 定义transform函数的类型,它接收一个DynamicObject并返回一个新的动态属性对象
type TransformFunction = (obj: DynamicObject) => {
[key: string]: unknown;
};
// 定义表格组件Props的类型
interface TableComponentProps {
data: DynamicObject[];
transform: TransformFunction;
}
类型推断说明
- 动态属性对象
DynamicObject
:使用 [key: string]: string
这种索引签名的方式,表明该对象的属性名是字符串类型,属性值也是字符串类型,以此来处理 data
数组中每个对象的动态属性。
transform
函数类型 TransformFunction
:定义该函数接收一个 DynamicObject
类型的参数,并返回一个新的对象,新对象同样使用索引签名 [key: string]: unknown
,因为其属性类型是动态推断的,这里先用 unknown
来表示不确定类型。
- 表格组件Props类型
TableComponentProps
:通过接口定义 data
为 DynamicObject
数组,transform
为 TransformFunction
类型,从而精确约束了表格组件Props的类型。