typeroots outdir esmoduleinterop compilation typescript ecmascript-6 ecmascript-5

compilation - outdir - ''var'' y ''let'' en Typescript 1.5



typescript ecma 6 (1)

¿Cuál es exactamente la diferencia entre usar '' var '' o '' let '' en Typescript? Sé que ''dejar'' permite que la variable se defina más en un alcance sin que se use fuera de dicho alcance. Eso es obviamente una buena ventaja para los iteradores en bucles. Sé que esta es una definición de ES6, por lo que compilar en ES6 debería ser casi idéntico en términos de ''var'' y ''let''.

Pero, cuando se compila en javascript de ES5 que no admite "dejar", ¿qué está sucediendo exactamente? ¿Existen variables con nombres extraños que el compilador crea para evitar el uso de dichas variables en el contexto del archivo Typescript? ¿Qué sucede en situaciones donde se definen muchas variables ''let'' a lo largo de una función? ¿Hay un impacto en el rendimiento que debería preocuparme?

Básicamente, ¿qué sucede cuando las compilaciones mecanografiadas permiten variables a javascript de ES5?


La forma más fácil de encontrar respuestas a este tipo de preguntas para probarlo en el área de juegos de TypeScript .

TypeScript cambia el nombre de las variables dentro del ámbito del bloque. No hay sobrecarga de rendimiento en comparación con el uso de variables regulares definidas con var .

Este código:

var i = 0; for (let i = 0; i < 5; i++) {} i++;

Compila a:

var i = 0; for (var i_1 = 0; i_1 < 5; i_1++) { } i++;

Here hay algo más de información sobre let .