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

如何在tsconfig中配置排除自动引入的lib.dom.d.ts类型文件

TypeScript 阻止lib.dom.d.ts自动加载的配置方法

报错原因

你在全局作用域声明的Event类,和TypeScript默认自动注入的DOM内置Event类型重名,触发Duplicate identifier报错。
TypeScript默认不会主动让开发者选择内置类型库,会根据设置的target编译目标自动拉取对应默认类型集,只要默认集里包含浏览器DOM类型,就会全局加载lib.dom.d.ts,把Event、HTMLElement这类DOM API类型注入到全局作用域。

具体配置

打开项目根目录的tsconfig.json,在compilerOptions下显式声明lib字段,手动指定需要加载的内置类型库,不要把"DOM"加入数组,就能覆盖TS的默认加载规则,阻止lib.dom.d.ts被自动引入。
举个服务端Node.js项目的配置参考(不需要浏览器DOM能力):

{
  "compilerOptions": {
    "target": "ES2020",
    "lib": ["ES2020"], // 仅加载ES2020标准库,不加载任何DOM相关类型
    // 项目里的其他原有配置保持不变即可
  }
}

你可以根据项目实际兼容的JS版本,替换lib数组里的ES版本值,比如ES2019、ESNext都可以,只要数组里不出现"DOM",lib.dom.d.ts就不会被自动加载。

补充说明

  • 配置保存后如果报错没有消失,重启TS服务即可生效:VSCode下按Ctrl+Shift+P(macOS用Cmd+Shift+P)调出命令面板,选择TypeScript: Restart TS Server。
  • 如果你的项目是前端项目,本身需要依赖DOM类型做类型校验,不要直接移除整个DOM库。这种场景不需要改tsconfig的lib配置,只要给自定义Event类所在的文件加一行export {},把文件标记为ES模块即可。模块内声明的类型/类作用域仅局限在当前模块,不会泄露到全局,自然不会和全局的DOMEvent产生重名冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:20:02