我有以下代码:
let answer: SomeType = new SomeType();
...some code...
if(something)
{
let answer = new SomeType();
}
在上面的代码中,在“if”中使用“let”是一个错误,我希望Typescript将其报告为错误。而是,Typescript将此行编译为Java脚本: var answer_1 = new SomeType(); 基本上由它自己生成一个新变量。
这是预期的行为吗?我认为这是一个错误。这就是为什么我使用let而不是var如果预期的行为,是否有一个编译器选项会将此报告为错误?
我正在使用Visual Studio 2017
由于
答案 0 :(得分:1)
这是预期的行为吗?
是
这就是let
与var
不同的原因。您可以阅读有关the difference between var and let in the documentation的更多信息。
摘录:
当使用let声明变量时,它使用一些调用词法作用域或块作用域。与使用var声明的变量(其范围泄漏到其包含的函数)不同,块范围变量在其最近的包含块或for循环之外是不可见的。
答案 1 :(得分:0)
tslint no-shadowed-variable规则可以满足我的需求。