为什么它创建新变量而不是报告错误?

时间:2017-11-14 20:43:27

标签: typescript

我有以下代码:

   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

由于

2 个答案:

答案 0 :(得分:1)

  

这是预期的行为吗?

这就是letvar不同的原因。您可以阅读有关the difference between var and let in the documentation的更多信息。

摘录:

  

当使用let声明变量时,它使用一些调用词法作用域或块作用域。与使用var声明的变量(其范围泄漏到其包含的函数)不同,块范围变量在其最近的包含块或for循环之外是不可见的。

答案 1 :(得分:0)

tslint no-shadowed-variable规则可以满足我的需求。