老师,如果使用axios拦截器怎么定义返回类型呢

来源:4-9 Dropdown 组件添加 DropdownItem

有没有没被占用的昵称

2021-03-16

import axios from ‘axios’

interface Result {
status: string;
message: string;
}

const instance = axios.create({
timeout: 30 * 1000,
baseURL: ‘https://dog.ceo
})

// 请求拦截器
instance.interceptors.request.use(
config => {
// 配置请求header
return config
},
error => {
console.log(error)
Promise.reject(error)
}
)

// 响应拦截器
instance.interceptors.response.use(
response => {
const res = response.data
if (res.status === ‘success’) {
return res
} else {
console.log(res.status)
Promise.reject(new Error(‘error’))
}
},
error => {
Promise.reject(error)
}
)

export default instance

这个是我的代码,response对应的类型是AxiosResponse,如何搞成Result呢

写回答

1回答

张轩

2021-03-16

同学你好 AxiosResponse 接受一个泛型可以拿来用一下

import { AxiosResponse } from 'axios'
interceptors.response.use((resp: AxiosResponse<{message: string}>) => {
 //在泛型中传入你想要的类型,现在 data 已经是传入的类型了
 resp.data.message
})


2
0

Vue3 + TS 仿知乎专栏企业级项目

带你完成前后端分离复杂项目,率先掌握 vue3 造轮子技能

3142 学习 · 2313 问题

查看课程