问题描述
我正在尝试对项目中 ReactAdmin 处理的所有数据进行强类型化。
ReactAdmin 似乎将其所有数据作为 Record 的实例来处理:
export interface Record {
id: Identifier;
[key: string]: any;
}
基本上告诉 Typescript 停止对记录的任何对象进行类型检查。问题是 react-admin 中的所有对象都是记录。
有没有办法为每个资源声明一个类型?我错过了什么吗?
先谢谢你!
解决方法
如果您使用专门的 react-admin 挂钩编写查询,则可以传递类型:
const { data,error,loaded } = useGetOne<Product>('products',123);
|
-- TypeScript sees data as a value of type Product
唯一的要求是您传递的类型(本例中为 Product
)扩展了 react-admin 的 Record
类型,它只会强制您的记录具有 id
字段。>
在这方面缺少 react-admin 文档,但请注意您的 IDE 显示的类型,它们显示通用钩子: