axios设置请求头ts类型检测报错的问题

axios设置请求头ts类型检测报错

在写项目的时候给请求拦截头加登录验证的时候遇到的,发现在axios1.1.3的版本之后,ts中,添加请求的通过 . 的时候,类型检测会报错

在这里插入图片描述
Authorization这个属于自定义的属性,ts不认,vue可以,相当于对象的创建与赋值

解决办法 1:

将axios 的版本降到1.1.3的版本,但是在工作中,肯定是用的最新版本,(不是最优解)
你需要先卸载axios现在的版本,使用命令,这里楼主使用的是yarn,各位大大可以使用其他的
yarn remove 你要卸载的依赖包
安装:yarn add axios@1.1.3
在这里插入图片描述
在这里,作者我用的是axios1.2.2的版本,是已经不能使用 **.**点语法来新增请求头了。

**办法2(最优解) :

**用axios 里面提供的config.headers.set方法来解决,set可以设置请求头的成员,就是自定义请求头成员
但是不止只设置 config.headers.set(“Authorization”, Bearer ${token}, false)这一句,ts会报错,因为set方法的类型太多了,ts没有办法识别,、
办法2的解决办法:
在这里插入图片描述 在上图中,先进行类型判断 if (typeof config.headers.set === ‘function’) {
config.headers.set(“Authorization”, Bearer ${token}, false)
}

可以简洁版 : typeof config.headers.set === ‘function’ && config.headers.set(“Authorization”, Bearer ${token}, false) 这是利用的逻辑中断

办法三(不推荐):

继承接口 AxiosRequestConfig的类型
ts不推荐使用any关键字,因为any就是为了逃避ts类型检测
interface RequestConig extends AxiosRequestConfig{
headers:any
}

instance.interceptors.request.use(
(config:RequestConig) => {
const store = useUserStore()
const token = store.userInfo?.token
if (token && config.headers) {
config.headers.Authorization = Bearer ${token}
}

}
return config
},
(err) => {
return Promise.reject(err)
}
)
以上就是楼主我遇到的一个ts的问题,如果有其他的建议,希望各位大大,多在评论区讨论或者私聊作者!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值