Cómo ejecutar TypeScript desde la línea de comandos: de lo simple a lo profesional
\n\nHa escrito su primer script en TypeScript. Todo se ve hermoso: tipado estricto, sintaxis concisa, autocompletado en el IDE. Pero cuando abre el terminal y escribe node script.ts, Node.js muestra un error. ¿Le suena conocido?
TypeScript es una extensión de JavaScript, y Node.js no puede ejecutar archivos .ts directamente. En este artículo, analizaremos todas las formas reales de ejecutar TypeScript desde la línea de comandos. Aprenderá en qué se diferencia una ejecución rápida de una compilación para producción, cuándo usar ts-node y cuándo tsx, y cómo no confundirse con las herramientas.
Nos basamos en una pregunta popular de Stack Overflow (más de 500 mil visitas), pero no solo damos una respuesta, sino una comparación completa de enfoques. ¡Allá vamos!
\n\n¿Por qué Node.js no entiende TypeScript?
\n\nAntes de buscar herramientas, entendamos el problema. Cuando escribe:
\n\nconst greet = (name: string): string => {\n return `Hello, ${name}!`;\n};\nconsole.log(greet('PythonLib'));\n\nNode.js ve : string y no sabe qué hacer con eso. JavaScript no admite el tipado estático como parte de su sintaxis. Por lo tanto, TypeScript primero debe ser transpilado (convertido) a JavaScript, y luego ejecutado.
Hay dos enfoques fundamentalmente diferentes:
\n- \n
- De dos pasos: primero compilar con
tsc script.ts, luego ejecutar connode script.js. \n - De un solo paso: usar utilidades que hacen ambas acciones por usted «sobre la marcha» (compilación JIT). \n
Veremos ambas opciones, pero comenzaremos con la más popular: la de un solo paso.
\n\nMétodo 1: ts-node — el clásico del género
\n\nts-node es un motor de ejecución de TypeScript para Node.js. Compila el código en memoria y lo pasa inmediatamente a Node.js. Es la forma más antigua y probada de ejecutar TypeScript desde la línea de comandos sin complicaciones.
Instalación y ejecución
\n\nnpm install -g ts-node typescript @types/node\nts-node script.ts\n\nListo. Su archivo se ejecutará sin crear un archivo JS intermedio. Internamente, ts-node usa el compilador estándar de TypeScript (tsc), pero lo hace de forma transparente para el desarrollador.
Ejemplo: trabajar con una API
\n\n// api-demo.ts\nimport axios from 'axios';\n\ninterface Post {\n userId: number;\n id: number;\n title: string;\n}\n\nasync function fetchFirstPost(): Promise<Post> {\n const response = await axios.get<Post>('https://jsonplaceholder.typicode.com/posts/1');\n return response.data;\n}\n\nfetchFirstPost().then(post => console.log(post.title));\n// Salida: sunt aut facere repellat provident occaecati excepturi optio reprehenderit\n\nEjecutamos: ts-node api-demo.ts. El resultado aparece directamente en la consola.
Ventajas y desventajas de ts-node
\n\n- \n
- + Simplicidad: un solo comando en lugar de dos. \n
- + Soporte para
tsconfig.json: todas sus configuraciones de TypeScript se tienen en cuenta. \n - + REPL: el comando
ts-nodesin argumentos abre un shell interactivo de TypeScript. \n - - Velocidad: en cada ejecución se realiza una compilación, lo que es notable en proyectos grandes. \n
- - Consumo de memoria: en uso prolongado (por ejemplo, en modo watch), puede consumir mucha RAM. \n
Cuándo usarlo: para scripts, prototipos y utilidades pequeñas. Si necesita ejecutar un archivo TypeScript desde la línea de comandos de forma rápida y sin configuración, ts-node es su elección.
\n\nMétodo 2: tsx — el sucesor moderno y rápido
\n\ntsx (TypeScript Execute) es una utilidad más nueva,