tutorial nodejs example es6 ejemplos javascript typescript

nodejs - typescript vs javascript



¿Se necesita "Usar estricto" en un archivo TypeScript? (2)

He visto publicaciones sobre dónde colocar la línea de "uso estricto" en un archivo de código TypeScript. Mi pregunta es, ¿por qué tenerlo?

Dado que TypeScript ya es un lenguaje fuertemente tipado, ¿qué agrega "use estricto"?


Por mi dinero, , "use strict"; debe incluirse en los archivos TypeScript.

Sin tener en cuenta los efectos de tiempo de compilación de "use strict"; en Typecript, es probable que haya un impacto en tiempo de ejecución cuando se ejecuta el JavaScript generado:

  • MDN identifica mejoras de rendimiento para evitar el encajonamiento de this en llamadas a funciones y la eliminación de las propiedades function.caller y function.arguments .

  • Jeff Walden, de Mozilla, también ha insinuado oportunidades para aumentar el rendimiento en esta respuesta .


Actualizaciones

  • TypeScript 1.8+: "use strict"; se emite en módulos ( Leer más ).
  • TypeScript 2.1+: la opción del compilador --alwaysStrict analiza todos los archivos en modo estricto y emite "use strict" en la parte superior de todos los archivos generados ( Leer más ).

Puede encontrar una lista de algunos ejemplos buscando en las pruebas de TypeScript "en modo estricto".

Aquí hay algunos ejemplos de código que solo arrojarán un error de tiempo de compilación cuando "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;

Hay algunos ejemplos más donde "use strict"; arrojaría un error solo en tiempo de ejecución. Por ejemplo:

"use strict"; delete Object.prototype;

Personalmente, no me parece tan útil para evitar que cometa errores en TypeScript y el ruido adicional que agrega a un archivo hace que no me moleste en escribirlo. Dicho esto, a partir de TS 2.1, habilitaré la opción del compilador --alwaysStrict porque agrega la estricta rigidez adicional sin ninguna sobrecarga de mantenimiento del código.