Volver a los artículos
· TypeScript · Jatniel Guzmán
Disponible en:

TypeScript 7.0 ya está disponible: el compilador es mucho más rápido

TypeScript 7.0 ya está disponible: el compilador es mucho más rápido

TypeScript 7.0 ya está disponible en versión estable, y esta release merece la pena mirarla con calma.

No porque traiga una nueva sintaxis espectacular o una opción más de configuración, sino porque mejora algo que muchos desarrolladores notamos a diario: el tiempo de espera.

El compilador de TypeScript ha sido portado a Go. La idea es clara: aprovechar código nativo, multithreading y una mejor paralelización para acelerar la compilación, la comprobación de tipos y la experiencia dentro del editor.

Microsoft habla de mejoras habituales entre 8x y 12x en proyectos grandes. Y en algunos casos, aumentando la paralelización, los resultados suben todavía más.

Unos números bastante claros

Microsoft ha publicado benchmarks sobre varios proyectos open source conocidos, usando la configuración por defecto de TypeScript 7:

Proyecto TypeScript 6 TypeScript 7 Mejora
vscode 125,7 s 10,6 s 11,9x
sentry 139,8 s 15,7 s 8,9x
bluesky 24,3 s 2,8 s 8,7x
playwright 12,8 s 1,47 s 8,7x
tldraw 11,2 s 1,46 s 7,7x

TypeScript 7.0 ya está disponible: el compilador es mucho más rápido

El caso de VS Code es bastante llamativo: se pasa de una compilación de más de dos minutos a poco más de diez segundos.

Y si se aumenta el número de workers con --checkers 8, VS Code baja hasta los 7,51 segundos, lo que supone una mejora de 16,7x respecto a TypeScript 6.

Otro punto interesante es que esta mejora de velocidad no parece venir acompañada de más consumo de memoria. En los proyectos medidos, Microsoft anuncia incluso una reducción de memoria usada, entre un -6 % y un -26 % según el caso.

Donde más se va a notar: el editor

Para mí, lo más importante no es solo que el build sea más rápido.

El cambio más visible seguramente estará en la experiencia diaria dentro del editor.

TypeScript 7 también trae un nuevo language server basado en LSP. En la práctica, todo lo que usamos constantemente debería responder más rápido: autocompletado, errores en tiempo real, información de tipos al pasar el ratón, navegación por el código, búsqueda de referencias, etc.

Microsoft da un ejemplo bastante claro: en el repositorio de VS Code, abrir un archivo con un error tardaba unos 17,5 segundos en mostrar el primer diagnóstico. Con TypeScript 7, baja a menos de 1,3 segundos.

En un proyecto pequeño, esto es cómodo.

En una base de código grande o en un monorepo, puede cambiar bastante la forma de trabajar.

Lo que se está viendo en proyectos reales

TypeScript 7 no llega solo con benchmarks de laboratorio. Microsoft explica que esta versión se ha probado durante más de un año en bases de código grandes, tanto dentro como fuera de Microsoft.

Entre las empresas mencionadas están Slack, Canva, Figma, Vercel, Notion, Sentry y Bloomberg, además de Teams, Office, PowerBI o Xbox dentro de Microsoft.

Algunos datos llaman bastante la atención:

  • Slack habría pasado de 7,5 minutos a 1,25 minutos de comprobación de tipos en CI.

  • Canva habría pasado de 58 segundos a 4,8 segundos hasta ver el primer error en el editor.

  • Un equipo de Microsoft habla de unas 400 horas de CI ahorradas al mes.

  • El nuevo language server habría reducido los comandos fallidos en más de un 80 % y los crashes en más de un 60 % frente a TypeScript 6.

Son cifras que se entienden sobre todo cuando se trabaja en proyectos grandes. Cuando el type-checking se vuelve demasiado lento, muchas veces se acaba delegando en la CI o ejecutándolo menos a menudo. Si TypeScript 7 permite volver a tener esa comprobación dentro del flujo normal de desarrollo, es una mejora importante.

Instalación

Para instalar TypeScript 7:

npm install -D typescript

Y después:

npx tsc

Por defecto, TypeScript 7 usa 4 workers para la comprobación de tipos. Se puede ajustar con --checkers:

npx tsc --checkers 8

Eso sí, conviene probarlo según la máquina y el proyecto. Más workers pueden acelerar la compilación, pero también pueden aumentar el consumo de memoria. En una máquina de desarrollo potente puede merecer la pena. En un runner de CI más limitado, mejor medir antes de tocarlo en serio.

El punto a vigilar

No todo el ecosistema podrá migrar de golpe.

TypeScript 7.0 todavía no expone una API programática estable. Esa API está prevista para TypeScript 7.1.

Esto afecta a herramientas y frameworks que dependen directamente de TypeScript, como Vue, Astro, Svelte, MDX, algunos usos de Angular, Volar o typescript-eslint.

Para esos casos, Microsoft recomienda hacer convivir TypeScript 6 y TypeScript 7 durante un tiempo.

Por ejemplo:

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

La idea es sencilla: mantener TypeScript 6 para las herramientas que todavía necesitan su API, y usar TypeScript 7 donde sea posible para aprovechar la mejora de rendimiento.

Mi opinión como desarrollador

Me parece una versión muy interesante porque no intenta llamar la atención con nuevas funcionalidades visibles, sino resolver un problema muy real: la espera.

Esperar a que termine el type-checking, esperar a que el editor muestre los errores, esperar a que la CI confirme algo que nos gustaría saber en local… son pequeños tiempos muertos que en proyectos grandes se acumulan rápido.

TypeScript 7 no cambia la forma de escribir TypeScript de un día para otro. Pero sí puede cambiar la velocidad a la que trabajamos con TypeScript.

Y en una herramienta tan presente en el desarrollo moderno, eso no es poca cosa.

Bravo a todo el equipo de TypeScript por este trabajo. La migración Go es impresionante, y no me extrañaría que inspire a otros lenguajes y herramientas de desarrollo.

Fuente: anuncio oficial de Microsoft, “Announcing TypeScript 7.0”.

Compartir este artículo