El nuevo compilador de TypeScript 7 basado en Go, tsgo, ya está rompiendo herramientas de desarrollo populares como ESLint, ts-jest y ts-morph. Estos fallos continuarán hasta que la API programática del compilador se estabilice en la próxima versión 7.1, lo que significa que los equipos que dependen de estas herramientas deberían pausar cualquier plan de actualización.
Qué cambió en TypeScript 7
El lanzamiento introdujo tsgo, un puerto en Go del comprobador de tipos que el equipo de TypeScript denominó en clave Project Corsa. Al trasladar el núcleo de JavaScript a Go, el compilador puede ofrecer compilaciones hasta diez veces más rápidas, un titular que atrajo a los primeros usuarios que buscaban reducir minutos en sus pipelines de CI.
Por qué están fallando las herramientas
Las herramientas que trabajan con TypeScript no se comunican directamente con el comprobador de tipos. Llaman a un conjunto de APIs internas que exponen información de tipos, diagnósticos y el recorrido del AST. Esas APIs fueron reescritas para tsgo y permanecen en constante cambio hasta la versión 7.1. El resultado es una cascada de bloqueos y fallos silenciosos:
- typescript-eslint – npm se niega a instalarlo junto con TypeScript 7; forzar la instalación hace que ESLint lance un
TypeError. - ts-jest – intenta llamar a métodos internos que ya no existen en la versión de Go, lo que provoca que la transformación de los archivos de prueba se aborte.
- ts-morph – espera que la API estable recorra la estructura del código; con la API actual, puede devolver resultados incorrectos o fallar sin previo aviso.
- Monorepos – tsgo descarta ciertos parámetros de tipo genéricos, lo que provoca errores de tipo que solo aparecen en proyectos grandes de múltiples paquetes.
Cualquier flujo de trabajo que combine linting, pruebas con Jest o análisis de código con TypeScript 7 probablemente experimentará compilaciones fallidas.
Quiénes se ven afectados
- Equipos de front-end que ejecutan ESLint como parte de cada pull request.
- Servicios de back-end que dependen de ts-jest para las pruebas unitarias.
- Librerías que utilizan ts-morph para la generación de código o documentación.
- Organizaciones con configuraciones de monorepo donde la inferencia de tipos ya es compleja.
Si su pipeline de CI se puso en rojo tras una actualización de TypeScript, el culpable es probablemente uno de los anteriores.
Una ruta de migración segura hasta la 7.1
La forma más sencilla de mantener las mejoras de velocidad sin romper las herramientas es desacoplar el paso de comprobación de tipos rápida de la compilación real:
- Fijar la versión principal de TypeScript a la 6.x – esto mantiene la API estable que todas las herramientas esperan.
- Añadir
@typescript/native-previewcomo dependencia de desarrollo – el paquete incluye el binario de tsgo para una comprobación de tipos rápida en CI. - Ejecutar tsgo con
--noEmitpara comprobaciones rápidas – valida los tipos pero no produce archivos de salida. - Usar el compilador clásico
tscpara las compilaciones reales –tscsigue produciendo JavaScript y respeta la API 6.x.
npm install -D typescript@^6.9
npm install -D @typescript/native-preview
Actualice sus scripts de package.json:
{
"scripts": {
"typecheck:fast": "tsgo --noEmit",
"build": "tsc"
}
}
Con esta configuración dual, conserva el aumento de velocidad de diez veces en CI mientras mantiene la compatibilidad con ESLint, ts-jest y ts-morph.
Cuándo puede actualizar directamente a la 7.0
Si su base de código solo invoca tsc —sin linting, sin Jest, sin ts-morph— entonces la API inestable no le afecta. En ese escenario tan específico, puede pasar a TypeScript 7 inmediatamente y disfrutar de la mejora de rendimiento sin pasos adicionales.
A qué prestar atención
- Versión 7.1 – el equipo de TypeScript ha indicado que la API programática se congelará en este lanzamiento. Una vez que llegue, el puente entre tsgo y las herramientas existentes desaparecerá, permitiendo una actualización limpia.
- Actualizaciones de herramientas – esté atento a los nuevos lanzamientos de
typescript-eslint,ts-jestyts-morph. Publicarán versiones compatibles poco después del lanzamiento de la 7.1. - Configuración de CI – recuerde reemplazar
tsgo --noEmitpor una llamada regular atscuna vez que la API se estabilice; ya no será necesario el paquete de vista previa.
Conclusión: Hasta que se bloquee la API en la 7.1, manténgase en TypeScript 6.x para su compilador principal, añada @typescript/native-preview para comprobaciones rápidas y siga usando tsc para las compilaciones. Esto evita fallos en el linting y las pruebas, mientras sigue aprovechando los beneficios de rendimiento del nuevo motor en Go.
