Tecnología

TypeScript 7.0 compila 10 veces más rápido — Vue, Svelte y Angular deben esperar

Adrian Kessler

El compilador de TypeScript integrado en VS Code tardaba 125 segundos en analizar una copia nueva del código base del propio editor. TypeScript 7.0 realiza la misma tarea en 10,6 segundos. Microsoft no optimizó el código antiguo: trasladó todo el entorno de ejecución del compilador de JavaScript a Go, desbloqueando un paralelismo multinúcleo que un motor de JavaScript no puede ofrecer.

El traslado no es una reescritura desde cero. Los ingenieros de Microsoft describieron la lógica de verificación de tipos como estructuralmente idéntica a la de TypeScript 6.0 — las mismas reglas, el mismo comportamiento, traducida a un lenguaje que puede distribuir el trabajo entre los núcleos de la CPU. El equipo eligió Go porque el código base original de JavaScript, cargado de funciones, se correspondía casi uno a uno con los modismos de Go. El nuevo runtime también introduce indicadores para el control explícito del paralelismo: al pasar –checkers 8 en una estación de trabajo moderna, la compilación de VS Code obtiene una mejora de 16,7 veces respecto a TypeScript 6. La verificación de tipos en el CI de Slack pasó de 7,5 minutos a 1,25. La compilación de Bluesky pasó de 24,3 segundos a 2,8. El patrón se mantiene en todos los códigos base: las ganancias se acumulan a medida que crece el tamaño del proyecto, porque el límite ahora es el hardware, no el runtime.

TypeScript 7.0 llega sin una API programática pública, la interfaz que las herramientas de compilación utilizan cuando llaman al compilador desde su propio código. El verificador de tipos de plantillas de todos los frameworks web importantes depende de ella. Las herramientas Volar de Vue, el servicio de lenguaje de Svelte, MDX, el verificador de plantillas de Angular: ninguna funciona con TypeScript 7.0. Herramientas como ts-morph y ts-jest, que exponen los internos del compilador de TypeScript para refactorización y pruebas, también están rotas. Microsoft ha confirmado que la API de reemplazo está prevista para TypeScript 7.1, esperado en octubre. Los proyectos que utilicen cualquiera de estos frameworks o herramientas no deberían actualizar todavía.

Las configuraciones de proyectos antiguos se enfrentan a un conjunto separado de obstáculos. TypeScript 7.0 convierte en errores de compilación las opciones que la versión 6.0 había marcado como obsoletas: los destinos de compilación ES5, los formatos de módulo AMD y SystemJS, la resolución de módulos clásica y la palabra clave assert en las sentencias import provocan que la compilación falle directamente. El nuevo tsconfig.json por defecto ya no carga automáticamente los paquetes @types, lo que significa que los proyectos que dependían de la detección ambiental de tipos sin declarar explícitamente sus dependencias de tipo fallarán silenciosamente en el momento de la importación. Microsoft proporciona un shim de compatibilidad typescript@npm:@typescript/typescript6 para los proyectos que necesitan mantener las herramientas TS6 funcionando junto al nuevo compilador.

Los proyectos que superan esos obstáculos — aplicaciones simples de Node.js o Deno, aplicaciones de navegador no construidas sobre un sistema de plantillas de framework, y bibliotecas sin dependencias de API programáticas — pueden actualizar con un solo cambio en package.json. El soporte de editores sigue la misma división: VS Code tiene una extensión dedicada de TypeScript 7 disponible ahora, y el soporte integrado está completando su migración al Protocolo de Servidor de Lenguaje, reemplazando el diseño anterior de TSServer. WebStorm y otros editores que también dependían de TSServer todavía están trabajando en esa transición.

TypeScript 7.1, actualmente previsto para octubre de 2026, incluirá la nueva API del compilador que las herramientas de Vue, Svelte, Angular y MDX necesitan antes de poder migrar. Cuando llegue, las ganancias de rendimiento del traslado a Go de 15 meses alcanzarán a todo el ecosistema. Hasta entonces, las páginas de proyecto de Volar, SvelteKit y Angular recomiendan mantenerse en TypeScript 6.0.x.

Etiquetas: , , ,

Debate

Hay 0 comentarios.