我可以防止意外覆盖TypeScript/JavaScript中的局部变量吗?

min*_*.dk 2 javascript local-variables typescript

今天我浪费了一个小时调试一个简单的问题,其中一个名为local的变量server被初始化和配置 - 然后,在同一个文件的最后一行上,意外地重新声明它,例如通过另一个var server = ...语句,有效地创建一个变量命名server,从而导致前一个变量超出范围; 然而,因为这些是相同类型的变量,具有相同的名称,所以其他一切继续工作,这使得调试相当困难.

是否有TypeScript或JavaScript语言功能,可以防止这种情况?

我的想法是,在同一范围内声明两个具有相同名称的变量,根本不应该被允许.

也许有一个短绒或一些质量保证工具,有能力检查和防止这种事情?(也许还有其他"坏"模式?)

Rya*_*ugh 6

let尽可能使用.

一个let变量不能其声明之前使用:

var x = 3;
function f() {
  console.log(x); // ReferenceError, x is not defined
  let x = 5;
}
Run Code Online (Sandbox Code Playgroud)