What does “use strict” add for TypeScript code?

家住魔仙堡 提交于 2019-12-10 13:56:30

问题


This question is a copy of “Use Strict” needed in a TypeScript file?

There are some answers, but it is not clear for what does "use strict" statement in TypeScript, when tsc shoes me strict mode errors without this statement.

But decided to ask as separated question aw well.

I am using TypeScript 1.6 and for me it is not clear what does "use strict" statement add in TypeScript?

Using "use strict"; statement looks like double check. Since tsc shows strict mode errors without this statement.

For example:

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 shows me:

  • Error:(16, 19) TS2300: Duplicate identifier 'a'.
  • Error:(24, 9) TS1101: 'with' statements are not allowed in strict mode.
  • Error:(8, 18) TS2300: Duplicate identifier 'p'.
  • Error:(2, 5) TS1121: Octal literals are not allowed in strict mode.
  • Error:(11, 16) TS1102: 'delete' cannot be called on an identifier in strict mode.
  • Error:(16, 9) TS2300: Duplicate identifier 'a'.
  • Error:(8, 24) TS1117: An object literal cannot have multiple properties with the same name in strict mode.
  • Error:(8, 24) TS2300: Duplicate identifier 'p'.

回答1:


I am using TypeScript 1.6 and for me it is not clear what does "use strict" statement add in TypeScript?

For TypeScript compile time it adds variable name checks as well. E.g. the following is okay

var implements = 123;

But the following errors :

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

Note : TypeScript also prevents other errors irrespective of strict mode declarations which is what is happening in your samples.




回答2:


The "use strict" statement affects the runtime, so if something that's invalid in strict mode has gotten past the TypeScript compiler, it will still throw an error at runtime.



来源:https://stackoverflow.com/questions/33610728/what-does-use-strict-add-for-typescript-code

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!