如何正确使用axios的inteceptor和typescript:
import axios, { AxiosRequestConfig, AxiosInstance } from 'axios'
HTTP.interceptors.request.use((config: AxiosRequestConfig) => config)
例如,当我创建axios示例时,我设置了默认配置:
const conf: AxiosRequestConfig = {
baseURL: process.env.VUE_APP_API_URL
}
const HTTP: AxiosInstance = axios.create(conf)
但是当我尝试使用带有自定义头的拦截器时:
HTTP.interceptors.request.use((config: AxiosRequestConfig) =>{
headers: {
'x-projectkey': 1234
}
})
它不起作用:
Argument of type '(config: AxiosRequestConfig) => void' is not assignable to parameter of type '(value: AxiosRequestConfig) => AxiosRequestConfig | Promise<AxiosRequestConfig>'
我对TS还是个新手,搞不懂这个。
3条答案
按热度按时间nfeuvbwi1#
您应该返回如下所示的配置:
玩得开心点
4smxwvx52#
从你提到的错误中,你错过了一个返回。这应该是可行的:
或者使用
return
关键字:von4xj4u3#
转到
AxiosRequestConfig
的类型定义,你可以看到,包括axios头在内的所有内容都是可选的:当创建
axiosInstance
并添加配置时,应返回config
,以便示例获取配置:然后,在您使用
axiosInstance
发出的每个请求中,它将包含x-projectkey
头: