“使用严格”为TypeScript代码添加了什么?

时间:2015-11-09 13:55:07

标签: typescript strict typescript1.6

此问题是“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'。
  •   

2 个答案:

答案 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编译器,它仍会在运行时抛出错误。