axios如何定义返回数据类型?

axios.post('/api/user').then((res)=>{
  if(res.code === 0){
    // 成功
  }
})

但是res这里类型提示会告诉我有data/config/headers,就是没有code。

我已经在拦截器中做了处理

axios.interceptors.response.use((response) => {
  return response.data;
}, (error) => {
  return Promise.reject(error);
});

请问我真实的接口返回的数据结构类似{code,data,msg}这种的数据结构类型,在哪里定义呢?

我在上面用res.code的时候希望有提示,而不是指提示data/config/headers

阅读 4.9k
1 个回答

题主应该是使用 Typescript 编写获取到请求数据时候的代码时,由于事先在拦截器中直接获取到 response 里面的 data 内容。但是接着写的时候遇到了 ts 报错的问题 (或者只是单纯的想在前端使用 TS 定义返回内容类型)

这种情况我是编写一个类型声明文件 typing.d.ts 来重新修改 axios 原来的 AxiosResponse 这个接口来自定义一个自己想要的响应体结构去处理的:
TS 代码:

import * as axios from 'axios';

declare module 'axios' {
  export interface AxiosResponse<T> {
    code: number;
    message: string;
    data: T;
    [keys: string]: any;
  }
}

然后在代码中就有了智能提示,同时也不会报错了。

如图↓

另外,我也是正在学习前端的新手,如果答得不对请包涵。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题