我有一个c#.net 8后端(后来被称为BE)来为我的react typescripfrontend(FE)提供数据.

我使用RTKQuery来获取数据,但当我假设从BE获得的Date对象实际上是一个Date对象时,我遇到了麻烦.

BE中的类:

public class Action
{
    public int Id { get; set; }
    public string Name { get; set; }
    public DateTime? StartDate { get; set; }
}

输入FE:

export interface Action {
  id: number;
  name: string;
  startDate: Date;
}

RTK查询端点:

actionById: builder.query<Action, number>({
   query: (id: number) => ({
       url: `${BASE_URL}/v1/Action/${id}`
       method: 'GET',
   }),
}),

BE的响应是一个JSON字符串,但我认为转换为Date对象是自动进行的.不是的. 一切都很好,直到我试图将它与另一个失败的日期进行比较.

所以问题是,如何以最好的方式解决这个问题?

我可以将FE中的类型更改为startDate: string;以避免混淆,但有没有更好的方法?

推荐答案

我建议使用transformResponse,以便根据需要转换响应数据.也许是这样的:

actionById: builder.query<Action, number>({
  query: (id: number) => `${BASE_URL}/v1/Action/${id}`,
  transformResponse: (response) => ({ ...response, startDate: new Date(response.startDate) }),
}),

Typescript相关问答推荐

如何根据参数的值缩小函数内的返回类型?

类型脚本中的Gnomeshell 扩展.如何导入.ts文件

React-Native运行方法通过监听另一个状态来更新一个状态

在Angular中注入多个BrowserModules,但在我的代码中只有一个

在类型脚本中的泛型类上扩展的可选参数

角效用函数的类型推断

被推断为原始类型的交集的扩充类型的交集

从TypeScrip中的其他类型检索泛型类型

扩展参数必须具有元组类型或传递给REST参数

TypeScrip泛型类未提供预期的类型错误

声明文件中的类型继承

我可以使用typeof来强制执行某些字符串吗

为什么发送空字段?

打印脚本中正则函数和函数表达式的不同类型缩小行为

在抽象类构造函数中获取子类型

Typescript .根据枚举输入参数返回不同的对象类型

如何实现允许扩展泛型函数参数的类型

Select 器数组到映射器的Typescript 泛型

React 中如何比较两个对象数组并获取不同的值?

基于泛型的柯里化函数的条件参数