tsx para TypeScript: guía completa con ejemplos prácticos
1. ¿Qué es tsx y para qué sirve?
tsx es un runner moderno y de alto rendimiento para TypeScript y ESM (ECMAScript Modules) que permite ejecutar archivos .ts, .tsx y .mts directamente, sin necesidad de compilarlos previamente a JavaScript. Construido sobre esbuild (un empaquetador ultrarrápido en Go), tsx ofrece una ejecución casi instantánea del código TypeScript, convirtiéndolo en la herramienta ideal para desarrollo, prototipado, creación de scripts y pruebas.
¿Para qué sirve tsx? Tradicionalmente, ejecutar archivos TypeScript requería un proceso de dos pasos: primero compilar el código con tsc (TypeScript Compiler) y luego ejecutar el JavaScript resultante con Node.js. Esto ralentiza los ciclos de desarrollo. tsx resuelve este problema combinando compilación y ejecución en un solo paso. Maneja automáticamente la sintaxis de TypeScript, módulos ESM, JSX y la resolución de node_modules. En esencia, tsx es un reemplazo de ts-node, pero mucho más rápido y moderno.
Ventajas clave de tsx frente a otras alternativas: velocidad (usa esbuild, que es de 10 a 100 veces más rápido que tsc), soporte nativo para ESM (sin necesidad de configurar tsconfig.json para módulos), detección automática de la configuración de TypeScript y modo --watch integrado. tsx es perfecto para: escribir utilidades CLI en TypeScript, ejecutar pruebas (Jest, Vitest), crear scripts de automatización, prototipado rápido y aprender TypeScript.
2. Instalación
tsx se distribuye a través de npm (Node Package Manager) y se puede instalar de forma global o local en un proyecto. Se recomienda la instalación local para aislar las dependencias del proyecto.
Instalación local (recomendada):
npm install --save-dev tsx
O usando yarn:
yarn add --dev tsx
O pnpm:
pnpm add --save-dev tsx
Instalación global (para acceso rápido desde cualquier lugar):
npm install -g tsx
Verificar la instalación:
npx tsx --version
Después de la instalación, puedes ejecutar archivos TypeScript con el comando npx tsx nombre_archivo.ts (instalación local) o tsx nombre_archivo.ts (instalación global).
Importante: tsx requiere Node.js versión 18 o superior. Para trabajar con ESM, asegúrate de que tu package.json tenga el campo "type": "module" o usa la extensión .mts para los archivos.
3. Inicio rápido — ejemplo mínimo funcional
Crea un archivo hola.ts con el siguiente contenido:
// hola.ts
const saludar = (nombre: string): string => {
return `¡Hola, ${nombre}! ¡Bienvenido al mundo de tsx!`;
};
const nombreUsuario: string = "PythonLib";
console.log(saludar(nombreUsuario));
// Usando características modernas de JS
const numeros: number[] = [1, 2, 3, 4, 5];
const duplicados = numeros.map((n) => n * 2);
console.log("Números duplicados:", duplicados);
// Código asíncrono
const obtenerDatos = async (): Promise => {
const datos = await Promise.resolve({ id: 1, nombre: "Ejemplo" });
console.log("Datos asíncronos:", datos);
};
obtenerDatos();
Ejecuta el archivo con el comando:
npx tsx hola.ts
Salida esperada:
¡Hola, PythonLib! ¡Bienvenido al mundo de tsx!
Números duplicados: [ 2, 4, 6, 8, 10 ]
Datos asíncronos: { id: 1, nombre: 'Ejemplo' }
Este ejemplo demuestra el funcionamiento básico de tsx: compila automáticamente TypeScript a JavaScript, soporta