Este es un trabajo en progreso, así que puedes leer más sobre esto en NPM.
Otra limitación importante es que se requiere la palabra clave type para las importaciones de tipo. Así que cada vez que importes un tipo, necesitas especificar que eso es un tipo. Por ejemplo, en el primer caso, importamos type 1 y 2. Usamos la palabra clave type. Si no la usamos, Node.js pensará que eso es un valor y no un tipo, así que no lo borrará. Mientras que si es un tipo, se puede borrar de forma segura, y causará un error en tiempo de ejecución.
Además, una limitación importante es que no es posible ejecutar archivos TypeScript en módulos de Node. Esto es para evitar interrumpir el ecosistema porque al publicar TypeScript, crearía muchas incompatibilidades. Así que si alguna vez intentas ejecutar un archivo TypeScript dentro de los módulos de Node, lanzamos un error llamado módulos de Node no soportados TypeScript. La razón por la cual esto fue específicamente impuesto por el equipo de TypeScript es porque causaría muchas versiones de compatibilidad, y tu IDE realizaría verificaciones de tipo en los módulos de Node y sabemos cuán grandes son los módulos de Node, así que no queremos hacer esto. En Node 23.6, habilitamos tipos de strip experimentales por defecto. Así que puedes ejecutar Node file.ts por defecto sin pasar ninguna bandera.
Además, hemos trabajado en la detección de sintaxis de TypeScript en Eval. Este es un tema muy interesante. Así que esto es, por ejemplo, podemos ver import util from util, y cost foo es un valor de cadena una palabra. Esta es una cadena ESM de TypeScript. Así que Node.js intenta evaluar si la sintaxis es un módulo común JS, que no lo es. Intentará de nuevo como un módulo ES, pero no lo es porque es TypeScript. Así que eso fallará. Si falla, intentará eliminar los tipos, así que intentará transpilar, como eliminar la cadena de esto, el tipo de cadena de punto de esta cadena. Así que foo ahora, esto es JavaScript puro, y esto es JavaScript puro ESM. Así que si esto falla, significa que tienes un error de sintaxis, o la sintaxis no es soportada. Así que lanzará el error del paso dos, más el mensaje del compilador de TypeScript. Esto es para evitar cambios drásticos en el error que se lanza. Y volverá a intentar ejecutar la cadena como un JS común, pero sabemos que es ESM, así que fallará. Y finalmente intentará de nuevo como un módulo ESM que es correcto. Así que puedes ver que la detección de sintaxis es muy complicada. Pero puedes omitir todo este sobrecosto especificando qué tipo de sintaxis es. Así que puedes usar la bandera guion guion input type para decir que este es un módulo TypeScript, o TypeScript común JS, y Node sabrá exactamente qué hacer.
Comments