javascript - "Use Strict" é necessário em um arquivo TypeScript?
Eu vi postagens sobre onde colocar a linha "use strict" em um arquivo de código TypeScript. Minha pergunta é: por que tê-la de qualquer forma?
Como o TypeScript já é uma linguagem fortemente tipada, o que "use strict" adiciona?
Resposta #1
Atualizações
- TypeScript 1.8+:
"use strict";é emitido em módulos (Leia mais). - TypeScript 2.1+: a opção de compilador
--alwaysStrictanalisa todos os arquivos em modo estrito e emite"use strict"no topo de todos os arquivos gerados (Leia mais).
Você pode encontrar uma lista de alguns exemplos pesquisando nos testes do TypeScript por "em modo estrito".
Aqui estão alguns exemplos de código que só gerarão um erro de tempo de compilação quando você "use strict";:
// 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;
Existem alguns exemplos a mais onde "use strict"; lançaria um erro apenas em tempo de execução. Por exemplo:
"use strict";
delete Object.prototype;
Pessoalmente, eu não acho isso tão útil para me impedir de cometer erros no TypeScript e o ruído adicional que adiciona a um arquivo me faz não me preocupar em escrevê-lo. Dito isso, a partir do TS 2.1, vou ativar a opção de compilador --alwaysStrict porque adiciona uma ligeira rigidez adicional sem qualquer sobrecarga de manutenção de código.
Resposta #2
Para mim, sim, "use strict"; deve ser incluído nos arquivos TypeScript.
Desconsiderando os efeitos em tempo de compilação de "use strict"; no TypeScript, há provavelmente um impacto em tempo de execução quando o JavaScript gerado é executado:
A MDN identifica melhorias de desempenho ao evitar o boxing de
thisem chamadas de função, e a remoção das propriedadesfunction.callerefunction.arguments.Jeff Walden, da Mozilla, também sugeriu oportunidades para ganhos de desempenho nesta resposta.
