这是我的基本代码(我将不同文件中的内容复制在一起):
import axios from "axios";
import { useQuery } from '@tanstack/react-query';
interface Scenario {
id: number,
name: string
}
const scenario = {
getAll: () => axios.get<Scenario[]>(`/api/dyn/ax_scenario`)
}
const {
isLoading,
isErrors,
data = []
} = useQuery({
queryKey: ['api.scenario.getAll'],
queryFn: api.scenario.getAll
});
字符串
当我将鼠标悬停在数据上时,我得到以下Typescript信息:
const data: any[] | AxiosResponse<Scenario[], any>
型
为什么会有any[]
?
我想得到的结果就是AxiosResponse<Scenario[]>
1条答案
按热度按时间i2byvkas1#
useQuery
提供的data
的类型是queryFn
或undefined
的返回类型,在您的示例中是AxiosResponse<Scenario[], any> | undefined
。除此之外,你给予
data
一个默认值data = []
,由于TypeScript不知道[]
的类型,它给它一个类型any[]
,所以你得到AxiosResponse<Scenario[], any> | any[]
。如果你想为
data
提供另一个(例如更严格类型的)默认类型,你可以这样做。但是从useQuery
你总是会得到undefined
。要为默认空数组提供一个类型,你可以通过data = [] as Scenario[]
做一个类型Assert。