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

TypeScript 4.6.4升级至4.7.4后axios/index.d.ts报类型错误

问题根因

这个错误是三方依赖类型定义冲突+TypeScript版本检查规则收紧共同导致的:

  1. 升级到的@types/node@18.0.0给全局Error接口扩展了可选属性status?: number
  2. 当前使用的axios@0.27.2自带的类型定义中,继承Error的AxiosError类重写了status属性,定义为status?: string,和基类的number类型不兼容
  3. 升级到的TypeScript 4.7收紧了接口/类继承时的属性类型兼容性校验,会直接抛出这类类型不匹配错误
  4. ts-node、ts-node-dev运行时默认不做全量的声明文件类型检查,只会转译代码,所以启动服务时不会触发这个错误,只有执行npx tsc做完整类型校验时才会报错。
解决方案

按推荐优先级从高到低排列:

  • 方案1:在tsconfig中开启skipLibCheck(最快、无侵入)
    打开项目根目录的tsconfig.json,在compilerOptions节点下添加"skipLibCheck": true配置即可。该配置会跳过对node_modules下所有第三方.d.ts类型声明文件的兼容性校验,仅检查业务代码的类型正确性,不影响生产构建的类型安全。
    修正后的tsconfig.json参考(顺便去掉了原配置中多余的尾逗号,避免JSON解析报错):
    {
      "compilerOptions": {
        "sourceMap": false,
        "outDir": "dist",
        "rootDir": "src",
        "strict": true,
        "lib": ["ES2021"],
        "esModuleInterop": true,
        "target": "ES2021",
        "moduleResolution": "node",
        "skipLibCheck": true
      }
    }
    
    保存后重新执行npx tsc即可消除报错。
  • 方案2:升级axios到修复版本
    该类型定义问题在axios后续版本已经官方修复,执行命令npm install axios@latest升级到最新稳定版,新版本中AxiosError.status的类型已经调整为number,可直接适配@types/node 18和TypeScript 4.7的校验规则。
  • 方案3:回退依赖版本(临时兜底)
    如果暂时不能改配置也不能升级axios,可以把TypeScript回退到4.6.4、@types/node回退到17.x版本,旧版本组合不会触发这个类型校验冲突,但长期来看不推荐使用,会错过后续的类型优化和新特性支持。

内容的提问来源于stack exchange,提问作者otobot1

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:24:16