首页 > 解决方案 > Eslint 和 Typescript 抱怨在两个不同文件中声明的变量

问题描述

我在使用 Typescript 和 ESLint 时遇到了一个非常基本的配置问题。我在两个不同的 .ts 文件中有一个名称相同的变量,Typescript 抱怨它们被定义了两次:

Cannot redeclare block-scoped variable 'myVariable'.ts(2451)
myfile.spec.ts(5, 15): 'myVariable' was also declared here.

我应该配置什么以避免在 VSCode 中出现此类错误?

该变量是顶级变量,它不在函数内部。

标签: typescriptvisual-studio-codeeslint

解决方案


你至少有三个选择:

  1. 使用模块,以便顶级声明不是全局的,而是将它们限定为模块。(这意味着将有两个,每个独立于另一个,每个模块一个。)

  2. 如果您真的希望它是一个共享的全局变量,请不要两次声明该变量。在一个文件中声明它并在另一个文件中使用它。

  3. 将两个声明都更改为 usevar而不是let/ const(错误消息的“块范围”部分告诉我们您正在使用letor const)。您可以重新声明var全局变量。

我强烈推荐#1。尽可能避免使用全局变量,在现代环境中几乎总是可能的。


推荐阅读