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 中出现此类错误?
这个变量是顶级变量,它不在函数内部。
您至少有三个选择:
使用模块使顶级声明不是全局的,而是将它们限定在模块范围内。 (这意味着会有两个,每个都彼此分开,每个模块一个。)
如果您真的希望它成为一个共享的全局变量,请不要声明该变量两次。在一个文件中声明它并在另一个文件中使用它。
更改两个声明以使用 var
而不是 let
/const
(错误消息的“块作用域”部分告诉我们您使用 let
或 const
)。您可以重新声明 var
全局变量。
我强烈推荐#1。尽可能避免使用全局变量,在现代环境中几乎总是可能的。
我 运行 遇到了 Typescript 和 ESLint 的一个非常基本的配置问题。我在两个不同的 .ts 文件中有一个同名变量,Typescript 抱怨它们被定义了两次:
Cannot redeclare block-scoped variable 'myVariable'.ts(2451)
myfile.spec.ts(5, 15): 'myVariable' was also declared here.
我应该如何配置才能避免在 VSCode 中出现此类错误?
这个变量是顶级变量,它不在函数内部。
您至少有三个选择:
使用模块使顶级声明不是全局的,而是将它们限定在模块范围内。 (这意味着会有两个,每个都彼此分开,每个模块一个。)
如果您真的希望它成为一个共享的全局变量,请不要声明该变量两次。在一个文件中声明它并在另一个文件中使用它。
更改两个声明以使用
var
而不是let
/const
(错误消息的“块作用域”部分告诉我们您使用let
或const
)。您可以重新声明var
全局变量。
我强烈推荐#1。尽可能避免使用全局变量,在现代环境中几乎总是可能的。