You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React+TypeScript项目使用axios请求拦截器报TS2532错误如何解决

错误根因

AxiosRequestConfig 类型定义中 headers 是可选属性,可能为 undefined,TypeScript 不允许直接对可能为 undefined 的对象的子属性赋值,因此抛出 TS2532 错误。

修复方案

修改 api.ts 中的请求拦截器逻辑,先为 config.headers 兜底默认值,再进行赋值即可:

import axios, { AxiosRequestHeaders } from "axios";
import { getUserLocalStorage } from "../context/AuthProvider/util";

export const Api = axios.create({
  baseURL: "http://localhost:8000/",
});

Api.interceptors.request.use(
  (config) => {
    const user = getUserLocalStorage();
    // 兜底headers为空对象,避免undefined报错
    config.headers = config.headers ?? {} as AxiosRequestHeaders;
    if (user?.token) {
      // 注意:标准JWT认证一般需要在token前加Bearer前缀,后端有特殊约定除外
      config.headers.Authorization = `Bearer ${user.token}`;
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
)

其他可选方案

如果不想做兜底判断,也可以直接使用类型断言跳过校验(不推荐优先使用,适合明确headers一定存在的场景):

(config.headers as AxiosRequestHeaders).Authorization = user?.token;

内容的提问来源于stack exchange,提问作者Antonio José

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:15:04