Saltar al contenido
•6 min de lectura

TypeScript 7 GA: la realidad del port a Go

El 8 de julio de 2026 Microsoft publicó TypeScript 7.0, y el compilador más usado de la industria cambió de lenguaje. El código base en JavaScript, bautizado "Strada", cede el puesto a "Corsa", el port en Go que Anders Hejlsberg anunció en marzo de 2025. El binario vuelve a llamarse tsc, el paquete sigue siendo typescript, y los builds completos bajan entre 7.7x y 11.9x en los benchmarks oficiales. - Fuente: Announcing TypeScript 7.0

Tras ese titular hay matices que valen un post completo: qué incluye y qué no, por qué medio ecosistema se rompió de un día para otro, y cómo lo migró el propio equipo de VS Code.

La línea de tiempo

El port no fue apurado. Los hitos, con fechas:

  • Marzo 2025: Hejlsberg anuncia el port nativo y abre el repo typescript-go. Objetivo declarado: reducir la mayoría de build times en 10x. - Fuente: A 10x Faster TypeScript
  • Mayo 2025: previews públicos con el paquete @typescript/native-preview y el binario tsgo. Llegó a 8.5 millones de descargas semanales, que es la medida de cuánta gente tenía curiosidad. - Fuente: Announcing TypeScript Native Previews
  • Diciembre 2025: el anuncio clave: "TypeScript 6.0 is the Last JavaScript-Based Release". El type-checking estaba casi completo y --build/--incremental ya portados. - Fuente: Progress on TypeScript 7
  • Marzo 2026: TypeScript 6.0 GA, el puente. Mismas deprecaciones que 7.0 convertirá en errores, con el flag de escape ignoreDeprecations. - Fuente: Announcing TypeScript 6.0
  • Julio 2026: 7.0 GA (typescript@7.0.2), binario renombrado a tsc.
  • Septiembre 2026: el repo typescript-go se archiva y el código vuelve al repo principal. Y VS Code empieza a bundlear TS 7 de fábrica (release vscode-typescript/v1.0.1, 30 de septiembre). - Fuente: TypeScript releases

Un dato de compatibilidad que resume el esfuerzo: de ~20.000 casos de prueba del compilador, solo 74 daban resultados distintos entre 6.0 y 7.0 en diciembre de 2025, y los dos pendientes (regex e isolatedDeclarations) terminaron antes del GA. El port fue de fidelidad, no de reinvención. - Fuente: Progress on TypeScript 7

Por qué es tan rápido

Tres razones técnicas, del anuncio de GA: código nativo, multithreading con memoria compartida, y nuevas optimizaciones. El port paraleliza parsing, type-checking y emit, y añade flags nuevos para exprimirlo:

  • --checkers N (default 4): más type-checkers en paralelo.
  • --builders N: builds paralelos de project references.
  • El file watcher de --watch es el de Parcel, portado a Go. - Fuente: Announcing TypeScript 7.0

El detalle fino: fue un port "lo más fiel posible, escribiendo código nuevo mientras se mantenía la estructura y lógica del codebase original". Por eso los resultados son consistentes entre los dos compilers: misma lógica, distinto motor.

Los números, incluidos los incómodos

La tabla del GA:

CodebaseTS 6TS 7SpeedupMemoria
VS Code125.7s10.6s11.9x5.2 → 4.2 GB
Sentry139.8s15.7s8.9x4.9 → 4.6 GB
Bluesky24.3s2.8s8.7x1.8 → 1.3 GB
Playwright12.8s1.47s8.7x1.0 → 0.9 GB
tldraw11.2s1.46s7.7x0.6 → 0.5 GB

Con --checkers 8, VS Code baja a 7.51s: 16.7x. El editor también: abrir un archivo con error en el codebase de VS Code pasó de 17.5 segundos a menos de 1.3. Y las cifras de empresas: Slack de 7.5 minutos a 1.25 en CI (y -40% de tiempo en su merge queue), Canva de 58s a 4.8s por el primer error en el editor, Microsoft News ahorró 400 horas al mes esperando builds. - Fuente: misma fuente

Ahora la parte que el titular no cuenta. El "10x" es un promedio de marketing: el rango real de la tabla oficial es 7.7x a 11.9x, y el propio equipo de VS Code midió 7x en --noEmit y 4x en watch completo. - Fuente: Iterating faster with TypeScript 7 Sobre la memoria, la tabla oficial muestra reducciones del 6% al 26%, pero la crítica independiente más leída del preview afirma lo contrario en algunos escenarios (los checkers paralelos duplican trabajo en procesos separados). - Fuente: Why does tsgo use so much memory? Dos lecturas, un consejo: mide en tu repo.

Qué incluye y qué no

Lo que NO incluye 7.0: API programática. Esta es la decisión que explica casi todo lo demás. "We expect TypeScript 7.1 to ship with a new (and different) API". Mientras tanto, todo lo que importaba la API de typescript se quedó en 6.0: webpack loaders, typescript-eslint, ts-morph, codemods. - Fuente: Announcing TypeScript 7.0

Tampoco hay tsserver: el language service es LSP. Funciona en VS Code, Visual Studio, WebStorm "y cualquier editor moderno", y redujo los comandos fallidos del language server en más del 80% y los crashes en más del 60% frente a TS 6. Pero los plugins de tsserver murieron: Vue (Volar), Astro, Svelte, MDX y Angular templates siguen en TS 6 por eso mismo. - Fuente: misma fuente, Announcing TypeScript 7.0 Beta

Lo que sí incluye: los defaults de 6.0 ahora inapelables (strict: true, module: esnext, target es2025, types: []), los errores duros por las deprecaciones (target: es5, moduleResolution: node, baseUrl, esModuleInterop: false...), template literal types que preservan code points Unicode completos, y el paquete @typescript/typescript6 para correr los dos compilers lado a lado:

// package.json
{
  "devDependencies": {
    "@typescript/native": "npm:typescript@^7.0.2",
    "typescript": "npm:@typescript/typescript6@^6.0.2"
  }
}

typescript resuelve al paquete 6.0 para tus herramientas con peer dependencies; @typescript/native te da el binario moderno. Ambos viven en el mismo node_modules. - Fuente: Announcing TypeScript 7.0

Cómo probarlo hoy

# install
npm install -D typescript

# verify
npx tsc --version   # Version 7.0.2

# the safe first use: check without emit
npx tsc --noEmit -p tsconfig.json

En VS Code, la extensión TypeScript Native Preview activa el language server de TS 7; desde el 30 de septiembre de 2026 viene incluido en el editor. En Visual Studio se habilita solo según el workspace. - Fuente: VS Code extension, TypeScript releases

Para proyectos que dependen de la API vieja, la recomendación oficial de Microsoft para Angular sirve como plantilla general: TS 7 para el chequeo rápido por CLI, TS 6.0 para las herramientas que incrustan el compilador. Ahí está la bifurcación temporal del ecosistema: tsc para los humanos, typescript6 para las máquinas que aún leen la API JS.

El manual de migración ya lo escribió VS Code

El equipo de VS Code publicó su proceso completo y es un estudio de caso perfecto, porque migraron el codebase TS más grande del mundo: - Fuente: Iterating faster with TypeScript 7

  1. Verano 2025: chequeos --noEmit con el preview en extensiones pequeñas. Cero riesgo.
  2. Otoño 2025: puente con 6.0, limpiando deprecaciones.
  3. Enero-febrero 2026: 6 y 7 en paralelo en CI; todas las extensiones builtin sobre el preview.
  4. Febrero 2026: TS 7 como default en todo el repo. De paso, tiraron webpack y adoptaron esbuild.

Su resultado: tsc --noEmit de 36s a 5s, watch completo de ~80s a ~20s, carga del proyecto en el editor de ~60s a ~10s. La lección de la secuencia: no migraron en un gran bang, migraron en cuatro pasos donde cada uno tenía una salida limpia.

Tips finales

  1. Tu primer uso es --noEmit. Emit sin API y con el pipeline nuevo es el terreno donde aparecen las sorpresas. El chequeo puro te da el beneficio sin el riesgo.
  2. El "10x" no es tu número. Es el de VS Code, con 1.5 millones de líneas. En un proyecto de 50 mil líneas, tu mejora será menor en valor absoluto, aunque tu CI igual lo agradecerá.
  3. Las deprecaciones de 6.0 son tu trabajo actual. Corre tu build con stableTypeOrdering y sin ignoreDeprecations. Lo que compila limpio ahí compila idéntico en 7.0, según el contrato de Microsoft.
  4. Si vives en Vue/Astro/Svelte/Angular, tu editor sigue en 6.0. No es bug, es el plan. La API de 7.1 resolverá el bloqueo de los plugins.
  5. Guarda @typescript/typescript6 en tu cañón. Cuando una dependencia te exija la API 6.0, es la salida sin desinstalar nada.

El caso de Angular merece capítulo aparte, y ahí está: Angular y TypeScript 7 (tsgo), con lo que el equipo está prototipando. Y si tu interés es el toolchain que se está construyendo encima (Oxc, oxlint con tsgo), pasa por Vite 8 y el stack VoidZero.

¿Cuánto tarda hoy tu tsc --noEmit? Pon el número en los comentarios y en un año lo comparamos.


> Más posts