Ejecuta código Typescript con TSX (alternativa TS-NODE)
Node es uno de los runtime más prácticos que hay hoy día, y suelo utilizarlo mucho para cierto tipo de tareas (junto con python o go para otras). En general me gusta trabajar con Typesciprt, ya que tener un sistema de tipos me ayuda a estructurar mejor el código, además de ayudarte a ver dónde afectan los cambios.
En este post quiero hablar sobre la herramienta tsx que te permite ejecutar código typescript, como alternativa a ts-node, la que he utilizado siempre.
No soy purista de Typescript y si hay tipos que son excesivamente complicados, prefiero evitar perder tiempo en definir y mantener estos casos
Como ya sabrás, typescript es un superconjunto de javascript que te permite definir tipos principalmente. El problema es que node (a diferencia de deno) no trae soporte nativo para código typescript, por lo que tienes que transpilar primero typescript a javascript para poder ejecutarlo.
El compilador más famoso es tsc
, aunque hay otros como swc
(hecho en rust) o esbuild
(hecho en Go), que te permiten transpilar el código, de forma que se traduce a javascript con el cual ya puedes ejecutar tu código con node. Hay una utilidad que es la que he utilizado siempre para desarrollo local que es ts-node
, que te permite saltarte estos pasos y ejecutar directamente ts-node mi-programa.tsx
para simplificar el proceso de desarrollo.
Aunque siempre he usado esta herramienta, me preguntaba si había alguna alternativa debido a los problemas de configuración que a veces me ha dado. Esta semana desarrollé una pequeña utilidad para enviar mails con Amazon SES y aproveché la oportunidad para investigar otras opciones.
Leyendo sobre esto, descubrí tsx
, una herramienta basada en esbuild para transpilar código. Lo que me encanta de tsx
es que no realiza type-checking, lo que lo hace mucho más rápido. Además, su configuración es sencilla: instalar y funcionar sin complicaciones.
Instalarlo y probarlo es realmente fácil. En la terminal, en el directorio de trabajo de tu proyecto, ejecuta lo siguiente:
npm i -D tsx
npx tsx fichero.tsx
Recuerda que siempre puedes añadir un atajo a la sección
scripts
del fichero package.json.
Lo he estado probando esta semana y me ha gustado mucho. Funciona de manera eficiente y rápida. La idea de no comprobar los tipos en tiempo de compilación es buena ya que el IDE que utilices, como Visual Studio Code, ya incluye un servidor que se encarga de hacer el type-check mientras hace linting de tu código. Y si necesitas una comprobación adicional, por ejemplo, para desplegar tu código a producción, siempre puedes ejecutar tsc
u otra herramienta que verifique los tipos tanto en tu local como en el pipeline (CD/CD).
Si te ha resultado útil este artículo agradecería si te suscribes a mi newsletter. Recibirás contenido exclusivo de calidad y también me ayudarás enormemente. Cada suscripción apoya el trabajo que realizo y me permite conocer mejor los temas que te interesan, de forma que puedo mejorar los conocimientos que comparto contigo.