Búsqueda de sitios web

node.js - ¿Existen motores para ejecutar código TypeScript directamente?


Cuando estudié TypeScript por primera vez, descubrí que node.js no ejecuta TypeScript, por lo que necesitas instalar un compilador de TypeScript que convierta tu código TypeScript en JavaScript.

Busqué hasta que encontré ts-node (ejecución de TypeScript y REPL para node.js), pero cuando leí la documentación encontré que hacen lo mismo (aquí). Incluso deno (un entorno moderno para JavaScript y TypeScript), está haciendo lo mismo (aquí).

Entonces mi pregunta es: ¿existen motores para ejecutar código TypeScript sin convertirlo a JavaScript?

Respuesta #1

No, TypeScript no es un lenguaje "independiente" en ese sentido. Es y siempre será un superset de JavaScript. Por eso el compilador de TypeScript a menudo se refiere como un transpilador: no compila a un lenguaje de nivel inferior. Después de que tsc ha realizado sus comprobaciones, transforma el código fuente existente a JavaScript simplemente eliminando todas las construcciones de TypeScript.

Desde la introducción del Manual oficial de TypeScript:

El objetivo de TypeScript es ser un verificador de tipos estático para programas de JavaScript; en otras palabras, una herramienta que se ejecuta antes de que tu código se ejecute (estático) y asegura que los tipos del programa sean correctos (verificados por tipos).

Entonces, para ejecutar TypeScript, siempre necesitarás un motor de JavaScript. Podrías adaptar un motor de JavaScript existente (o construir el tuyo propio) para que también entienda TypeScript, pero aun así siempre tendría que ser primero un motor que cumpla con la especificación ECMAScript.

Deno no es diferente. Tiene un compilador de TypeScript incorporado, que es una copia del oficial. Del capítulo de TypeScript del manual de Deno.

A un nivel alto, Deno convierte TypeScript (así como TSX y JSX) en JavaScript. Hace esto a través de una combinación del compilador de TypeScript, que incorporamos en Deno, y una biblioteca de Rust llamada swc. Cuando el código ha sido verificado y transformado, se almacena en una caché, listo para la siguiente ejecución sin necesidad de convertirlo de su fuente a JavaScript nuevamente.

Después de la transpilación, Deno ejecuta el JavaScript resultante en el motor V8 de Google, el mismo motor utilizado en NodeJS y Chrome.

Respuesta #2

Hasta ahora no existe ningún motor de JavaScript parecido a V8 que sea consciente de TypeScript. Es poco probable que veamos uno. En algún momento en el futuro, TC39 decidirá sobre la propuesta oficial de JS con tipos. Y entonces, la tipificación y las optimizaciones correspondientes se añadirán gradualmente al propio V8.

Puede que sea poco probable que TypeScript sea directamente compatible, pero aún así será fácilmente transpirable de un lado a otro.

Actualmente hay varios proyectos de compilación AOT de I+D (directamente a binario, wasm/nativo) para TypeScript, o al menos para un subconjunto viable del mismo.

https://github.com/ASDAlexander77/TypeScriptCompiler

Artículos relacionados