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

TypeScript中能否调用fetch().finally()?VS Code报错问题咨询

解决TypeScript中Promise.finally()类型报错问题

问题根源很明确:Promise.prototype.finally是ES2018(ES9)新增的标准方法,而你当前依赖的lib.es5.d.ts是ES5的类型定义库,自然不包含这个方法的类型声明,导致VS Code的TypeScript检查报错。

以下是两种可行的解决办法:

方法一:更新TypeScript编译配置

修改项目根目录下的tsconfig.json,通过指定更高的目标版本或添加对应库来引入finally的类型定义:

{
  "compilerOptions": {
    // 直接将目标版本设为ES2018或更高,会自动引入对应类型库
    "target": "ES2018",
    // 或者在lib数组中添加ES2018(或仅ES2018.Promise),同时保留原有需要的库
    "lib": ["ES5", "DOM", "ES2018.Promise"]
  }
}

保存配置后,VS Code会自动重新加载类型定义,finally()的类型报错就会消失。

方法二:手动扩展Promise接口(兼容旧版本)

如果无法升级TypeScript的目标版本,可以手动扩展Promise的全局类型。在项目中创建一个.d.ts类型声明文件(比如global.d.ts),添加以下内容:

interface Promise<T> {
  finally(onFinally?: (() => void) | undefined | null): Promise<T>;
}

TypeScript会自动识别这个全局接口扩展,补上finally方法的类型声明,不影响代码的实际运行(只要你的运行环境本身支持Promise.finally)。

内容的提问来源于stack exchange,提问作者Jason Rich Darmawan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:00:56