Node.js agrega soporte experimental para TypeScript
(github.com/nodejs)Módulo: se agrega --experimental-strip-types
-
Es posible ejecutar archivos TypeScript en Node.js
- Al establecer la bandera
--experimental-strip-types, se pueden ejecutar archivos TypeScript - Node.js transforma el código fuente TypeScript en código fuente JavaScript
- Durante la transformación no se realiza verificación de tipos; los tipos se eliminan
- Al establecer la bandera
-
Motivación
- Es importante permitir ejecutar archivos TypeScript sin dependencias externas ni loaders
- Se busca que los usuarios puedan ejecutar
node foo.ts
-
Qué significa el type stripping
- El type stripping consiste en eliminar todos los tipos y convertir la entrada en un módulo JavaScript
- Ejemplo:
const foo: string = "foo";se transforma enconst foo = "foo";
-
Por qué se eligió @swc/wasm-typescript
- Por su simplicidad
- Otras herramientas requieren agregar Rust o Go, pero @swc/wasm-typescript solo necesita un paquete pequeño con archivos wasm y js
- También se usa en Deno, por lo que es confiable
-
Limitaciones
- Funciones exclusivas de TypeScript como enum y namespaces no se transforman
- No se admiten imports sin extensión
-
Planes a futuro
- Podría implementarse en la capa nativa
- Se podría agregar soporte para source maps
Resumen de GN⁺
- Explica una nueva función para permitir ejecutar archivos TypeScript en Node.js
- Permite ejecutar archivos TypeScript transformándolos a JavaScript, sin realizar verificación de tipos
- Esto simplifica el entorno de desarrollo al permitir que los usuarios ejecuten archivos TypeScript sin dependencias externas
- Esta función fue implementada usando @swc/wasm-typescript, y también se está considerando una implementación en la capa nativa a futuro
- Puede ser útil para proyectos que mezclan TypeScript y JavaScript.
1 comentarios
Opiniones en Hacker News
Eliminar los tipos de TypeScript no es posible sin la gramática de TypeScript. Quitar tipos no es una tarea a nivel de tokens, y la gramática de TypeScript sigue cambiando
foo < bar & baz > ( x )se interpretaba de manera distinta en TypeScript 1.5Si Node.js pudiera ejecutar archivos TypeScript directamente, el compilador de TypeScript ya no tendría que quitar los tipos y convertirlos a JavaScript
Si esta función se vuelve el valor predeterminado, me pregunto cómo reaccionará el ecosistema de NPM
engine: nodejs >= 25a package.json y omitir el paso de buildSería una gran ventaja si Node pudiera inspeccionar tipos en JS
La experiencia de desarrollo (DX) de Bun no tiene precedentes en esta área y cubre la mayoría de los casos de uso
Disfruto mucho TypeScript y he deseado desde hace tiempo un runtime de TypeScript
Mi función favorita de deno está llegando directamente a Node
Ha sido un mes muy importante para Node
Soy el autor del PR, AMA
Hace mucho tiempo empecé a usar Node.js para trabajo de backend, y ofrecía muchas ventajas frente a PHP