NextJs中Axios响应报Property 'sliders' does not exist on type 'never'.ts(2339)
问题原因
该报错属于TypeScript静态类型校验提示,不影响代码实际运行。Axios默认无法感知你请求的后端接口返回数据结构,会将response.data的类型推断为never,因此访问sliders字段时编辑器会触发字段不存在的报错。运行时JavaScript不会做类型校验,只要接口实际返回了对应字段就可以正常获取数据。
另外你代码中const data = await response.data;的await是多余的,你已经通过await axios.get()拿到了完整响应对象,response.data是同步可获取的普通对象,无需额外await。
解决方案
- 方案1:快速临时解决,使用类型断言
直接将response.data断言为any类型即可跳过类型校验:const data = response.data as any; - 方案2:规范类型定义(推荐)
先定义接口返回的数据结构,再给axios请求指定泛型:
此时TypeScript会自动识别// 定义接口返回数据的类型,可根据实际返回字段补全 interface ResData { sliders: any[] // 也可以继续写清sliders内部每个元素的字段类型 } // 请求时传入泛型 const response = await axios.get<ResData>(urlGenerator("api/v1/frontend-configuration")); const data = response.data;data的类型为你定义的ResData,访问sliders字段不会再触发报错。 - 方案3:全局配置axios返回类型为any
如果项目不需要严格的接口返回类型校验,可以在全局axios配置文件中添加类型声明,让所有axios请求的返回数据默认是any类型:declare module 'axios' { export interface AxiosResponse<T = any> { data: T } }
内容的提问来源于stack exchange,提问作者Ishrat
相关产品推荐
相关产品推荐

