“Use Strict” needed in a TypeScript file?
I’ve seen posts regarding where to put the “use strict” line in a TypeScript code file. My question is, why have it at all?
Since TypeScript is already a strongly typed language, what does “use strict” add?
- TypeScript 1.8+:
"use strict";is emitted in modules (Read more).
- TypeScript 2.1+:
--alwaysStrictcompiler option parses all files in strict mode and emits
"use strict"at the top of all outputted files (Read more).
You can find a list of some examples by searching TypeScript’s tests for “in strict mode”.
Here’s some examples of code that will only throw a compile time error when you
// future reserved keyword not allowed as variable name var let, yield, public, private, protected, static, implements; // "delete" cannot be called on an identifier var a; delete a; // octal literals not allowed 03;
There are a few more examples where
"use strict"; would throw an error only at runtime. For example:
"use strict"; delete Object.prototype;
Personally, I don’t find it all that useful at preventing me from making mistakes in TypeScript and the additional noise it adds to a file makes me not bother writing it. That said, starting in TS 2.1 I’ll enable the
--alwaysStrict compiler option because it adds the slight additional strictness without any code maintenance overhead.
For my money, yes,
"use strict"; should be included in TypeScript files.
Disregarding the compile time effects of