在TypeScript文件中使用“严格使用”?

我已经看过有关将“use strict”行放在TypeScript代码文件中的post。 我的问题是,为什么呢?

由于TypeScript已经是一种强types语言,“使用严格”的添加是什么?

更新

  • TypeScript 1.8+: "use strict"; 在模块中发射( 阅读更多 )。
  • TypeScript 2.1+:– --alwaysStrict编译器选项以严格模式parsing所有文件,并在所有输出文件的顶部发出"use strict" ( 阅读更多 )。

您可以通过在“严格模式”下searchTypeScript的testing来find一些例子的列表。

下面是一些代码的例子,当你"use strict";时,它只会抛出编译时错误"use strict";

 // future reserved keyword not allowed as variable name var let, yield, public, private, protected, static, implements; // "delete" cannot be called on an identifier var a; delete a; // octal literals not allowed 03; 

还有几个例子"use strict"; 只会在运行时抛出一个错误。 例如:

 "use strict"; delete Object.prototype; 

就个人而言,我没有发现它有助于防止我在TypeScript中犯错误,而且它添加到文件中的额外噪声使我不必费心编写它。 也就是说,从TS 2.1开始,我将启用--alwaysStrict编译器选项,因为它添加了轻微的附加严格性,而不会增加代码维护开销。

对于我的钱, 是的"use strict"; 应该包含在TypeScript文件中。

不顾"use strict";编译时间效应"use strict"; 在Typescript上,执行生成的JavaScript时可能会产生运行时影响:

  • MDN识别性能改进 ,避免在函数调用中装箱,并删除function.callerfunction.arguments属性。

  • Mozilla的Jeff Walden也暗示了在这个答案中性能提升的机会。