在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.caller
和function.arguments
属性。 -
Mozilla的Jeff Walden也暗示了在这个答案中性能提升的机会。