7

这个问题是TypeScript 文件中需要的“Use Strict”的副本吗?

有一些答案,但不清楚 TypeScript 中的“使用严格”语句是什么,当 tsc 让我在没有此语句的情况下出现严格模式错误时。

但决定问一个单独的问题。

我正在使用 TypeScript 1.6,对我来说,不清楚在 TypeScript 中添加了什么“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”。
4

2 回答 2

10

我正在使用 TypeScript 1.6,对我来说,不清楚在 TypeScript 中添加了什么“use strict”语句?

对于 TypeScript 编译时,它还添加了变量名检查。例如以下是可以的

var implements = 123;

但出现以下错误:

"use strict";
var implements = 123; // Error: implements is a reserved keyword in strict mode 

注意: TypeScript 还可以防止其他错误,无论您的示例中发生的严格模式声明如何。

于 2015-11-09T22:50:09.170 回答
2

"use strict"语句会影响运行时,因此如果在严格模式下无效的内容通过了 TypeScript 编译器,它仍然会在运行时抛出错误。

于 2015-11-09T14:15:10.240 回答