此问题是“Use Strict” needed in a TypeScript file?
的副本有一些答案,但是当没有这个语句时,tsc让我严格模式错误时,不清楚TypeScript中的“use strict”语句是什么。
但是决定好好分开问题。
我正在使用TypeScript 1.6,对我而言,目前尚不清楚TypeScript中的“use strict”语句是什么?
使用“use strict”;声明看起来像是双重检查。 由于tsc在没有此语句的情况下显示严格的模式错误。
例如:
class Foo {
03;
constructor(public name:string) {
}
move(meters:number) {
let o = {p: 1, p: 2};
let a;
delete a;
alert(this.name + " moved " + meters + "m.");
}
sum(a:number, a:number, c:number):number {
var sum = 015 +
197 +
142;
var x = 17;
with (obj)
{
x;
}
[1, 2, 3, 4, 5].map(function (n) {
return !(n > 1) ? 1 : arguments.callee(n - 1) * n;
});
delete sum;
return a + b + c;
}
tsc告诉我:
- 错误:(16,19)TS2300:重复标识符'a'。
- 错误:(24,9)TS1101:严格模式下不允许使用'with'语句。
- 错误:(8,18)TS2300:重复标识符'p'。
- 错误:(2,5)TS1121:严格模式下不允许使用八进制文字。
- 错误:(11,16)TS1102:严格模式下无法在标识符上调用“删除”。
- 错误:(16,9)TS2300:重复标识符'a'。
- 错误:(8,24)TS1117:对象文字在严格模式下不能具有多个具有相同名称的属性。
- 错误:(8,24)TS2300:重复标识符'p'。
答案 0 :(得分:10)
我正在使用TypeScript 1.6,对我而言,目前尚不清楚"使用严格"语句添加TypeScript?
对于TypeScript编译时,它还添加了变量名称检查。例如。以下是好的
var implements = 123;
但是出现以下错误:
"use strict";
var implements = 123; // Error: implements is a reserved keyword in strict mode
注意: TypeScript还可以防止无论严重模式声明的其他错误,这是您的样本中发生的事情。
答案 1 :(得分:2)
"use strict"
语句影响运行时,因此如果在严格模式下无效的东西超过了TypeScript编译器,它仍会在运行时抛出错误。