Eslint 和 Typescript 抱怨在两个不同文件中声明的变量

Eslint and Typescript complain about a variable declared in two different files

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

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

我应该如何配置才能避免在 VSCode 中出现此类错误?

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

您至少有三个选择:

  1. 使用模块使顶级声明不是全局的,而是将它们限定在模块范围内。 (这意味着会有两个,每个都彼此分开,每个模块一个。)

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

  3. 更改两个声明以使用 var 而不是 let/const(错误消息的“块作用域”部分告诉我们您使用 letconst)。您可以重新声明 var 全局变量。

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