Tutoriales de Javascript • • 5-8 minutos

TypeScript 7: cómo migrar al compilador nativo en Go sin romper el tsconfig, el lint ni el CI

Diego Cortés
Diego Cortés
Full Stack Developer & SEO Specialist
Compartir:
TypeScript 7: cómo migrar al compilador nativo en Go sin romper el tsconfig, el lint ni el CI
Imagen generada con IA

Instalaste TypeScript 7 y el build reventó con errores de tsconfig que no conocías. No es casualidad: el compilador está reescrito en Go, es mucho más rápido y convirtió en errores duros las opciones que la versión 6 solo avisaba. Esto es qué cambia y cómo migrar por pasos.

Qué es TypeScript 7 y por qué no es "una versión más"

TypeScript 7 no trae tipos nuevos ni sintaxis nueva. Lo que cambia es el motor: el compilador y el servicio de lenguaje se portaron desde la base histórica escrita en TypeScript a una implementación nativa en Go.

El compilador y el servicio de lenguaje, portados de TypeScript a Go

El port es la esencia del proyecto: el compilador (lo que transpila y type-chequea) y el servicio de lenguaje (lo que alimenta al editor) se reescribieron sobre una base nativa, manteniendo el comportamiento del lenguaje. El JavaScript de salida es el mismo, pero lo produce un binario mucho más rápido.

Las fechas: beta en abril, RC en junio, disponibilidad general en julio de 2026

La beta llegó el 21 de abril de 2026 y se distribuyó como un paquete de vista previa con el nombre tsgo, para poder probar el port sin tocar el compilador de producción. El release candidate salió el 18 de junio y la disponibilidad general el 8 de julio de 2026. En npm, la versión vigente del paquete typescript es la 7.0.2.

Mismos tipos, mismo comando, otro motor: qué significa eso para tu día a día

En la versión final no necesitas un binario aparte: el compilador nativo se invoca con el mismo tsc de siempre y entiende el mismo tsconfig. La consecuencia práctica es incómoda: npm install -D typescript ya te instala el compilador nuevo sin preguntar, así que mucha gente se lo encuentra sin haber planificado nada.

Lo primero que se rompe: tus opciones de tsconfig

TypeScript 6.0 avisaba, TypeScript 7 elimina

TypeScript 6.0 fue la versión puente: deprecó un lote de opciones y cambió varios valores por defecto. TypeScript 7 borra esas opciones, y lo que en 6 solo generaba un aviso ahora es un error duro que impide compilar. El mensaje de error del propio compilador te dice qué opción ya no existe, así que la primera pasada es de limpieza, no de depuración.

Las opciones que desaparecen y con qué se sustituyen

El caso más citado es importsNotUsedAsValues y preserveValueImports: ambas desaparecen y su sustituto es verbatimModuleSyntax, que unifica el control de cómo se emiten los imports que solo referencian tipos. El segundo foco habitual es baseUrl y su relación con los paths, que ahora se resuelven de otra forma, además de esModuleInterop cuando se fija en false. Regla sana: quitar lo que el compilador marque y no rellenar a ciegas con lo que diga un blog.

Defaults que cambian: strict, types y por qué aparecen errores nuevos

Con TypeScript 6 varios valores por defecto se movieron, y en 7 el comportamiento es más estricto. Los cambios que más se notan: strict activo por defecto, module apuntando a esnext y types vacío por defecto. Ese último es el que produce el clásico "Cannot find name 'process'": si tu tsconfig no declara explícitamente los tipos globales, el compilador ya no los carga por su cuenta.

Lo segundo que se rompe: las herramientas que usan el compilador como librería

Qué es la API del compilador y por qué importa aquí

Además de compilar, TypeScript se puede importar como librería: se instancian objetos como ts.Program o ts.LanguageService y se construyen herramientas encima. TypeScript 7.0 se lanzó sin esa API pública estable, y ahí está el problema para todo el ecosistema.

ESLint, Vue, Svelte, Astro, Angular y los loaders: quién puede migrar hoy

Todo lo que importa el compilador como librería queda esperando: el plugin de TypeScript de ESLint, el chequeo de plantillas de Vue con vue-tsc, svelte-check, astro check, el chequeo de plantillas de Angular y los loaders de bundlers que delegan el type-check. Si tu proyecto usa alguno, tu tsc será mucho más rápido, pero el lint y el editor pueden quedarse igual o romperse.

TypeScript 7.1 y la API estable: por qué el editor puede no volar todavía

La API estable llega con TypeScript 7.1, y por eso la mayoría de guías de migración ponen el foco ahí y no en 7.0. Consecuencia honesta: si tu cuello de botella es el feedback del editor y no el build de CI, puede que hoy no ganes casi nada.

Checklist de migración paso a paso

Paso 1: inventario, separando quien ejecuta tsc de quien importa la API

Antes de tocar versiones, haz dos listas: herramientas que ejecutan el compilador y herramientas que lo importan. El segundo grupo condiciona la fecha de la migración; el primero es el que se beneficia de inmediato.

Paso 2: línea base y rama aparte antes de tocar la versión

No mezcles la subida del compilador con cambios de código. Comprueba la versión actual, corre un type-check y guarda el resultado como línea base:

npx tsc --version
npx tsc --noEmit

Paso 3: limpiar el tsconfig (opciones eliminadas, rootDir, types, module)

Quita las opciones que el compilador marque como inexistentes, y en lugar de confiar en los defaults fija explícitamente rootDir y types, y elige a conciencia module y moduleResolution. Es el paso que resuelve la mayoría de los errores nuevos.

Paso 4: monorepos con project references y tsc --build

Si tu repo es un monorepo, revisa project references, composite y los builds con tsc --build. Es donde una migración descuidada se nota en minutos en lugar de segundos, y también donde más se gana con el motor nativo:

npx tsc --build --force

Paso 5: CI, matriz de versiones y type-check separado del lint

Separa el type-check del lint en el pipeline: así una herramienta que todavía no soporta TypeScript 7 no tumba todo el CI. Fija la versión de Node en la matriz (por ejemplo, si planeas subir a Node.js 26 cuando entre en LTS) y mide los tiempos antes y después, no de memoria. Los pasos de CI tienen su propio oficio y conviene apoyarse en una guía de CI/CD con GitHub Actions si estás montando esta parte desde cero.

Paso 6: versión fija y plan de vuelta a 6.x

Deja typescript en una versión fija (sin rangos abiertos) y ten probada la vuelta a 6.x antes de seguir. Si algo se rompe en producción, quieres volver con un cambio de una línea, no reescribiendo el tsconfig.

Qué ganas de verdad (y qué no)

Builds varias veces más rápidos: los benchmarks que se están citando

El motor nativo se compara con el compilador anterior en el rango de builds de 8 a 12 veces más rápidos, y el caso más citado es el propio código de VS Code, alrededor de 1,5 millones de líneas, pasando de unos 77,8 segundos a 7,5 segundos. Son cifras publicadas y atribuibles, no extrapolaciones: en tu proyecto dependerá del tamaño y de cuánto tiempo se vaya en escribir ficheros.

Lo que TypeScript 7 no cambia: el lenguaje y tus tipos

No esperes tipos nuevos, sintaxis nueva ni cambios en el sistema de tipos. 7.0 es infraestructura, no lenguaje. Si lo que esperabas era una API nueva del lenguaje, este no es el release.

Dónde no vas a notar nada: si el cuello de botella es el bundler

Si tu build de desarrollo tarda por el bundler y no por el type-check, migrar no te cambiará la vida. Mide antes: un type-check de 20 segundos que ahora tarda 3 se nota poco si el bundler tarda 40.

Errores que verás y cómo se arreglan

"Opción desconocida" en tsconfig

Es la opción eliminada. Quítala del tsconfig (o cámbiala por su sustituto, como verbatimModuleSyntax) y vuelve a compilar.

El lint crashea después de actualizar

Suele ser el plugin de ESLint importando una API que ya no existe. La salida es quedarse en 6.x para el lint o esperar a 7.1; no hay parche casero fiable.

"Cannot find name process" y el infierno de los tipos globales

El default de types pasó a lista vacía. Declara explícitamente en tu tsconfig los paquetes que aportan los nombres globales que usas.

El type-check pasa pero el build de la app falla

Significa que el bundler y sus plugins van por otro camino. Separa responsabilidades: que el type-check no dependa de los plugins del bundler y viceversa.

Conclusión: cuándo migrar hoy y cuándo esperar a 7.1

Si tienes un repositorio grande con type-check lento, no usas nada que importe la API del compilador y controlas tu CI, el salto vale la pena hoy. Si tu proyecto depende de Vue, Svelte, Astro o Angular, de ESLint con su plugin de TypeScript o de loaders que hacen type-check, lo prudente es esperar a 7.1. Y si ya te topaste con el error: vuelve a 6.x, limpia el tsconfig con calma y planifica la subida en una rama aparte. El blog seguirá cubriendo el estado del ecosistema cuando llegue 7.1.

Categorías