有没有办法在 React-Admin 资源中进行强类型检查?

问题描述

我正在尝试对项目中 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 显示的类型,它们显示通用钩子:

enter image description here