【问题标题】:What does "use strict" add for TypeScript code?“使用严格”为 TypeScript 代码添加了什么?
【发布时间】:2016-02-10 04:38:41
【问题描述】:

本题抄袭“Use Strict” needed in a TypeScript file?

有一些答案,但不清楚 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”。

【问题讨论】:

  • 请注意,您已链接到两个不同的问题 - 除了您还“回答”的那个this answer 中已有的信息之外,您还不清楚您正在寻找哪些信息?

标签: typescript strict typescript1.6


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我使用的是 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 还可以防止其他错误与您的示例中发生的严格模式声明无关。

    【讨论】:

      猜你喜欢
      • 2019-04-01
      • 2014-07-22
      • 1970-01-01
      • 2015-05-06
      • 1970-01-01
      • 1970-01-01
      • 2021-10-01
      • 1970-01-01
      • 2012-08-18
      相关资源
      最近更新 更多