我在打字稿中使用react-redux并收到错误
import type {RootState} from "../store.ts";
import { fetchBaseQuery } from '@reduxjs/toolkit/query'
import type {BaseQueryFn, FetchArgs,FetchBaseQueryError,} from '@reduxjs/toolkit/query/react'
import {createApi} from "@reduxjs/toolkit/query/react";
const baseQuery = fetchBaseQuery({
baseUrl:'http://localhost:3500/api/v1/',
credentials:'include',
prepareHeaders:(headers:Headers,{getState})=>{
const token:string|null = (getState() as RootState).auth.token
if(token){
headers.set("authorization",`Bearer ${token}`)
}
return headers
}
});
const baseQueryWithReauth: BaseQueryFn<string | FetchArgs,unknown, FetchBaseQueryError> = async (args, api, extraOptions) => {
const result = await baseQuery(args, api, extraOptions)
console.log(result?.data?.message.AT);
return result
}
我怎样才能获得 result.data.message.AT 而不会出现错误。 “TS2339:类型 {} 上不存在属性消息” 我像这样从后端发送数据
res.status(200).send({success:true,message:{AT:accessToken}});
在非错误响应中,
data
类型为any
,请参阅fetchBaseQuery:
type FetchBaseQueryResult = Promise< | { data: any error?: undefined meta?: { request: Request; response: Response } } | { error: { status: number data: any } data?: undefined meta?: { request: Request; response: Response } } >
您可以投射响应
data
属性。
示例:
type ResponseData = {
success: boolean;
message: {
AT: string;
};
}
...
const baseQueryWithReauth: BaseQueryFn<
string | FetchArgs,
unknown,
FetchBaseQueryError
> = async (args, api, extraOptions) => {
const result = await baseQuery(args, api, extraOptions);
if (result.data) {
const data = result.data as ResponseData;
console.log(data.message.AT);
}
return result;
}