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,
sí
,
"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 propiedadesfunction.caller
yfunction.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.