Typescript/Intellisesnse(错误?)从另一个文件中获取变量 (lib.dom.d.ts)

Typescript/Intellisesnse (wrongly?) picking up variable from another file (lib.dom.d.ts)

今天我引用了一个 unnamed/undefined 变量,但 Typescript/Intellisense 没有捕捉到它,导致我的代码出现错误。变量名为“status”,Intellisense 从文件 /usr/share/code/resources/app/extensions/node_modules/typescript/lib/lib.dom.d.ts 中获取定义。 (我用的是LinuxUbuntu20.04)

更多详情:

我初始化了一个基本项目来演示错误(抱歉,我似乎无法 post 图片,因为声誉很低)

unamed "status" variable does not create error

单击“查找所有引用”后,我发现“状态”已在随机 lib.dom.d.ts 文件中声明

"status" has been declared in a random lib.dom.d.ts file

这似乎是因为我全局安装了 Typescript?我还在项目中安装了Typescript;两个安装都是最新版本“typescript@4.3.4”

我还检查了这是否只是一个 VSCode 特定的错误,但 Sublime Text 的 LSP-typescript 也发现了同样的错误定义。

我该如何解决这个问题?

我的tsconfig.json如下

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "outDir": "./dist",
    "rootDir": "./src",
    "removeComments": true,
    "strict": true,
    "noImplicitAny": false,
    "moduleResolution": "node",
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  },
  "exlude": ["node_modules"]
}

类型定义正确。

它是 defined by window.status(尽管已弃用),因此 status 在浏览器上下文中应被视为全局。

我 运行 昨天遇到了与 close/window.close 相同的问题。

感谢@spender的回答,让我意识到这是Typescript的预期行为,是我受了委屈。

我通过在 tsconfig.json 中添加 "lib" option 解决了这个问题。似乎如果我排除“lib”选项,Typescript 将默认包含所有库。但我不希望“dom”库干扰我的后端代码,所以我使用:"lib": ["es2015"]

如果我以后使用“dom”库,我想我将不得不格外小心