如何在Typescript中为axios设置默认请求头
TypeScript 中为axios设置自定义默认请求头的解决方案
报错原因
该报错为TypeScript类型检查不通过导致:axios内置的类型定义中,默认请求头common对象未声明x-auth-token这个自定义字段,直接赋值会触发类型不匹配错误。
可选解决方案
- 方案1:临时类型断言,适合小项目或快速调试场景
直接对common对象做类型断言,告诉TypeScript该对象允许自定义字符串键:
function setJwt(jwt: string | null) { (axios.defaults.headers.common as Record<string, string | null>)["x-auth-token"] = jwt; }
- 方案2:扩展axios全局类型,适合长期维护的中大型项目
在项目中新建类型声明文件(如src/typings/axios.d.ts),添加以下内容扩展axios的请求头类型:
import 'axios'; declare module 'axios' { export interface AxiosRequestHeaders { 'x-auth-token': string | null; } }
类型扩展完成后原代码可直接正常运行,无需额外修改。
- 方案3:使用axios内置
set方法,适配axios v0.22.0及以上版本
新版本axios的headers对象提供原生的set方法,天生支持自定义字段,无需额外处理类型:
function setJwt(jwt: string | null) { // 可按需添加判空逻辑,避免headers不存在的极端情况 if (axios.defaults.headers) { axios.defaults.headers.common.set('x-auth-token', jwt); } }
内容的提问来源于stack exchange,提问作者Medinho
相关产品推荐
相关产品推荐

