Progreso en TypeScript 7 – Diciembre de 2025

2 de diciembre de 2025

Avances en TypeScript 7 – Diciembre 2025

Daniel Rosenwasser

Gerente Principal de Producto

Tabla de contenidos

A principios de este año, el equipo de TypeScript anunció que hemos estado portando el compilador y el servicio de lenguaje a código nativo para aprovechar un mejor rendimiento bruto, uso de memoria y paralelismo. Este esfuerzo (con nombre en clave “Proyecto Corsa”, y pronto “TypeScript 7.0”) ha sido una tarea significativa, pero hemos logrado grandes avances en los últimos meses. Estamos emocionados de dar algunas actualizaciones sobre dónde estamos y mostrarles cuán “real” es hoy en día la nueva herramienta de TypeScript.

También tenemos noticias sobre nuestra hoja de ruta futura y cómo estamos priorizando el trabajo en TypeScript 7.0 para llevar a cabo nuestro port a su conclusión.

Soporte de editor y servicio de lenguaje

Para muchos desarrolladores, una reescritura de proyecto puede parecer completamente teórica hasta que finalmente se libera. Ese no es el caso aquí.

Las versiones preliminares nativas de TypeScript son rápidas, estables y fáciles de usar hoy en día —incluyendo en su editor.

El servicio de lenguaje de TypeScript (lo que impulsa las características de TypeScript y JavaScript en su editor) también es una parte fundamental del esfuerzo de port a código nativo, y es fácil probarlo. Puede obtener la última versión desde el Marketplace de Visual Studio Code, que se actualiza todos los días.

Nuestro equipo aún está portando funciones y corrigiendo errores menores, pero la mayoría de lo que realmente hace que la experiencia de edición de TypeScript existente funcione ya está allí y funciona bien.

Esto incluye:

  • Completado de código (¡incluyendo auto-importaciones!)
  • Ir a definición
  • Ir a definición de tipo
  • Ir a implementación
  • Encontrar todas las referencias
  • Renombrar
  • Información rápida / tooltips al pasar el mouse
  • Ayuda de firma
  • Formateo
  • Rangos de selección
  • Lentes de código
  • Jerarquía de llamadas
  • Símbolos del documento
  • Correcciones rápidas para importaciones faltantes

Es posible que note algunas cosas que destacan desde nuestra última actualización importante —auto-importaciones, encontrar todas las referencias, renombrar y más. Sabemos que estas funciones eran las piezas faltantes que impedían que muchos desarrolladores probaran las versiones preliminares nativas. Estamos felices de decir que ahora se han reimplementado y están listas para uso diario. Estas operaciones ahora funcionan en cualquier base de código TypeScript o JavaScript —incluyendo aquellas con referencias de proyecto.

También hemos reestructurado partes de nuestro servicio de lenguaje para mejorar la confiabilidad mientras aprovechamos el paralelismo de memoria compartida. Aunque algunos equipos informaron que la experiencia original era un poco “inestable” a veces, a menudo la toleraban debido a las mejoras de velocidad. La nueva arquitectura es más robusta y debería poder manejar bases de código, tanto grandes como pequeñas, sin problemas.

Aunque ciertamente queda más por portar y pulir, su equipo probablemente encontrará que probar las versiones preliminares nativas de TypeScript vale la pena. Puede esperar tiempos de carga más rápidos, menos uso de memoria y un editor más ágil y receptivo en general.

Si alguna vez no está satisfecho con la experiencia, nuestra extensión facilita alternar entre la experiencia de TypeScript integrada en VS Code y la nueva. Realmente le animamos a usted y a su equipo a probar hoy la extensión de vista previa nativa para VS Code!

Compilador

El compilador de TypeScript también ha logrado avances significativos en el port nativo. Al igual que nuestra extensión de VS Code, hemos estado publicando compilaciones nocturnas de vista previa del nuevo compilador bajo el nombre de paquete @typescript/native-preview. Puede instalarlo mediante npm así:

# dependencia de desarrollo local
npm install -D @typescript/native-preview

# instalación global
npm install -g @typescript/native-preview

Este paquete proporciona un comando tsgo que funciona de manera similar al comando existente tsc. Ambos pueden ejecutarse simultáneamente.

Una pregunta frecuente que recibimos es si es “seguro” usar TypeScript 7 para validar una compilación; en otras palabras, ¿encuentra de manera confiable los mismos errores que TypeScript 5.9?

La respuesta es un rotundo sí. La verificación de tipos de TypeScript 7 está casi completa. Para contexto, tenemos alrededor de 20,000 casos de prueba del compilador, de los cuales aproximadamente 6,000 producen al menos un error en TypeScript 6.0. En todos los casos excepto 74, TypeScript 7 también produce al menos un error. De esos 74 casos restantes, todos son trabajos incompletos conocidos (por ejemplo, verificación de sintaxis de expresiones regulares o errores de isolatedDeclarations) o están relacionados con cambios intencionales conocidos (deprecaciones, cambios en configuraciones predeterminadas, etc.). Puede usar con confianza TypeScript 7 hoy para verificar los tipos de su proyecto en busca de errores.

Más allá de la verificación de tipos de un solo paso/proyecto, el compilador de línea de comandos también ha alcanzado una gran paridad. Funciones como --incremental, soporte de referencias de proyecto y modo --build también se han portado y funcionan ahora. Esto significa que la mayoría de los proyectos pueden probar la vista previa nativa con cambios mínimos.

# Ejecutando tsc en modo --build...
tsc -b some.tsconfig.json --extendedDiagnostics

# Ejecutando el *nuevo compilador* en modo --build...
tsgo -b some.tsconfig.json --extendedDiagnostics

No solo estas funciones están ahora disponibles, sino que deberían ser dramáticamente más rápidas que las versiones existentes implementadas en TypeScript 5.9 y versiones anteriores (a.k.a. la “base de código Strada”). Como hemos descrito previamente, esto se debe en parte al rendimiento del código nativo, pero también al uso del paralelismo de memoria compartida. Más específicamente, esto significa que no solo TypeScript puede ahora realizar compilaciones multihilo rápidas en proyectos individuales; también puede compilar múltiples proyectos en paralelo. Combinado con nuestra reimplementación de --incremental, estamos cerca de hacer que las compilaciones de TypeScript se sientan instantáneas para cambios pequeños en proyectos grandes.

Solo como recordatorio, incluso sin --incremental, TypeScript 7 a menudo ve un aumento de velocidad cercano a 10 veces sobre el compilador 6.0 en compilaciones completas.

Proyecto tsc (6.0) tsgo (7.0) Delta Factor de aceleración
sentry 133.08s 16.25s 116.84s 8.19x
vscode 89.11s 8.74s 80.37s 10.2x
typeorm 15.80s 1.06s 14.20s 9.88x
playwright 9.30s 1.24s 8.07s 7.51x

Diferencias esperadas respecto a TypeScript 5.9

Hay algunas advertencias al usar el nuevo compilador que queremos destacar. Muchas de estas son problemas puntuales que planeamos resolver antes del lanzamiento final de 7.0, pero algunas están más impulsadas por decisiones a largo plazo para mejorar la experiencia predeterminada de TypeScript. La promesa de TypeScript 7.0 significa que necesitaremos cambiar fuertemente nuestro enfoque hacia la nueva base de código para cerrar las brechas existentes y poner la nueva cadena de herramientas en manos de más desarrolladores. Pero primero, profundicemos y cubramos algunos de los cambios y limitaciones actuales.

Compatibilidad con deprecaciones

TypeScript 7.0 eliminará comportamientos y banderas que planeamos deprecarse en TypeScript 6.0. Actualmente, puede ver la lista de próximas deprecaciones en 6.0 en nuestro rastreador de problemas. Algunos ejemplos prominentes incluyen:

Esto no es exhaustivo, así que consulte el rastreador de problemas para el estado actual de las cosas. Si su proyecto depende de alguno de estos comportamientos obsoletos, puede necesitar realizar algunos cambios en su base de código o tsconfig.json para garantizar la compatibilidad con TypeScript 7.0.

Nuestro equipo ha estado experimentando con una herramienta llamada ts5to6 para ayudar a actualizar automáticamente su tsconfig.json. La herramienta utiliza heurísticas en extends y references para ayudar a actualizar otros proyectos en su base de código. Actualmente solo puede actualizar la configuración de baseUrl y rootDir, pero se podrían agregar más en el futuro.

npx @andrewbranch/ts5to6 --fixBaseUrl your-tsconfig-file-here.json
npx @andrewbranch/ts5to6 --fixRootDir your-tsconfig-file-here.json

Emisión, --watch y API

Incluso con preparación para 6.0, hay algunas circunstancias en las que el nuevo compilador no puede ser sustituido inmediatamente.

Por un lado, la canalización de emisión de JavaScript no está completamente completa. Si no necesita emisión de JavaScript desde TypeScript (por ejemplo, si usa Babel, esbuild u otra cosa), o si está apuntando a navegadores/runtimes modernos, ejecutar tsgo para su compilación funcionará bien. Pero si depende de que TypeScript apunte a runtimes antiguos, nuestro soporte para compilación de nivel inferior solo llega hasta el objetivo es2021, y sin soporte para compilar decoradores. Planeamos abordar esto con soporte completo de --target retrocediendo hasta es2015, pero ese trabajo aún está en curso.

Otro problema es que nuestro nuevo modo --watch puede ser menos eficiente que el compilador de TypeScript existente en algunos escenarios. En algunos casos puede encontrar otras soluciones como ejecutar nodemon y tsgo con la bandera --incremental.

Finalmente, Corsa/TypeScript 7.0 no soportará la API existente de Strada. La API de Corsa aún está en desarrollo, y no existe ninguna integración de herramientas estables para ella. Esto significa que cualquier herramienta como linters, formateadores o extensiones de IDE que dependan de la API de Strada no funcionará con Corsa.

La solución alternativa para algunos de estos problemas puede ser tener los paquetes typescript y @typescript/native-preview instalados lado a lado, y usar la API ≤6.0 para las herramientas que la necesiten, con tsgo para verificación de tipos.

Verificación de JavaScript y compatibilidad con JSDoc

Otra cosa que queremos destacar es que nuestro soporte para verificación de tipos de JavaScript (en parte impulsado por anotaciones JSDoc) se ha reescrito desde cero. En un esfuerzo por simplificar nuestros componentes internos, hemos reducido parte de nuestro soporte para patrones complejos y menos utilizados que anteriormente reconocíamos y analizábamos. Por ejemplo, TypeScript 7.0 no reconoce las etiquetas @enum y @constructor. También eliminamos algunas reglas de verificación de tipos “relajadas” en JavaScript, como interpretar:

  • Object como any,
  • String como string,
  • Foo como typeof Foo cuando el último habría sido válido en un archivo TypeScript,
  • todos los parámetros tipados como any, unknown y undefined como opcionales

y más. Algunas de estas están siendo revisadas y documentadas aquí, aunque la lista puede necesitar actualizarse.

Esto significa que algunas bases de código JavaScript pueden ver más errores de los que veían antes, y pueden necesitar actualizarse para funcionar bien con el nuevo compilador. Por otro lado, creemos que la nueva implementación es más robusta y mantenible, y alinea el soporte de JSDoc de TypeScript con su propia sintaxis de tipos.

Si siente que algo debería funcionar o falta en nuestro soporte de verificación de tipos de JavaScript, le animamos a abrir un problema en nuestro repositorio de GitHub.

Enfocándonos en el futuro

Cuando comenzamos a reescribir TypeScript el año pasado, había muchas incertidumbres. ¿Estaría entusiasmada la comunidad? ¿Cuánto tiempo tomaría estabilizar la base de código? ¿Qué tan rápido podrían los equipos adoptar esta nueva herramienta? ¿Qué grado de compatibilidad podríamos ofrecer?

En todos los frentes, hemos quedado muy agradables sorprendidos. Hemos podido implementar un verificador de tipos con compatibilidad extremadamente alta. Como resultado, proyectos tanto dentro como fuera de Microsoft informan que han podido usar fácilmente el compilador nativo con esfuerzo mínimo. La estabilidad va bien, y estamos en camino de terminar la mayoría de las funciones del servicio de lenguaje para fin de año. Muchos equipos ya están usando Corsa para trabajo diario sin problemas bloqueantes.

Con 6.0 a la vista, debemos considerar qué sucede a continuación en la base de código JavaScript. Nuestro plan inicial era continuar trabajando en la línea 6.0 “hasta que TypeScript 7+ alcance suficiente madurez y adopción”. Sabemos que aún queda trabajo por hacer para desbloquear a más desarrolladores (por ejemplo, más trabajo en la superficie de la API), y cerrar el desarrollo en la línea Strada —nuestro compilador basado en JavaScript— es la mejor manera para nosotros de eliminar esos bloqueadores antes que después. Para ayudarnos a completar estos trabajos lo más pronto posible, estamos tomando algunas medidas en el proyecto Strada.

TypeScript 6.0 es la última versión basada en JavaScript

TypeScript 6.0 será nuestro último lanzamiento basado en la base de código existente de TypeScript/JavaScript. En otras palabras, no tenemos intención de lanzar un TypeScript 6.1, aunque podríamos tener lanzamientos de parche (por ejemplo, 6.0.1, 6.0.2) en circunstancias más raras.

Puede considerar TypeScript 6.0 como un lanzamiento “puente” entre la línea TypeScript 5.9 y 7.0. 6.0 deprecará funciones para alinearse con 7.0, y será altamente compatible en términos de comportamiento de verificación de tipos.

La mayoría de las bases de código que necesiten funcionalidad específica de Strada en el lado del editor (por ejemplo, complementos del servicio de lenguaje) deberían poder usar 6.0 para funcionalidad del editor, y 7.0 para compilaciones rápidas en línea de comandos sin muchos problemas. Lo inverso también es cierto: los desarrolladores pueden usar 7.0 para una experiencia más rápida en su editor, y 6.0 para herramientas en línea de comandos que dependan de la API de TypeScript 6.0.

El mantenimiento adicional después del lanzamiento de TypeScript 6.0 será en forma de lanzamientos de parche, y solo se emitirá en caso de:

  • problemas de seguridad,
  • regresiones de alta gravedad (es decir, errores nuevos y serios que no estaban presentes en 5.9),
  • correcciones de alta gravedad relacionadas con la compatibilidad entre 6.0/7.0.

Como con lanzamientos anteriores, los parches serán infrecuentes y solo se emitirán cuando sea absolutamente necesario.Pero por ahora, queremos asegurarnos de que TypeScript 6.0 y 7.0 sean lo más compatibles posible. Mantendremos un estándar muy alto en cuanto a qué PRs abiertos se fusionan en la rama 6.0. Esto entra en vigor hoy y significa que la mayoría de los desarrolladores tendrán que ajustar sus expectativas sobre qué problemas se abordarán en TypeScript 6.0. Además, los colaboradores deben entender que es muy poco probable que fusionemos solicitudes de extracción en 6.0, ya que la mayor parte de nuestro enfoque se centrará en llevar a 7.0 a la paridad y estabilidad. Queremos ser transparentes en este aspecto para evitar trabajos “desperdiciados” y para que nuestro equipo pueda evitar complicaciones al portar cambios entre las dos bases de código.

Reinicio de problemas del servicio de lenguaje

Aunque la mayor parte del código de verificación de tipos central se ha portado sin diferencias de comportamiento, el servicio de lenguaje es una historia diferente. Dada la nueva arquitectura, gran parte del código que impulsa las finalizaciones, las sugerencias al pasar el mouse, la navegación y más, se ha reescrito ampliamente. Además, TypeScript 7.0 utiliza el protocolo estándar LSP en lugar del protocolo personalizado TSServer, por lo que algunos comportamientos específicos de la extensión de TypeScript para VS Code pueden haber cambiado.

Como resultado, cualquier error o sugerencia específico del comportamiento del servicio de lenguaje probablemente no se reproduzca en la rama 7.0, o necesitará un “reinicio” en la conversación.

Estos problemas requieren mucho tiempo para verificarlos manualmente, por lo que en su lugar cerraremos los problemas existentes relacionados con el comportamiento del servicio de lenguaje. Si encuentra un problema que se cerró bajo la etiqueta “7.0 LS Migration”, por favor registre un nuevo problema después de validar que se puede reproducir en la extensión nativa nocturna. Para la funcionalidad que aún no se ha portado a 7.0, espere hasta que esa funcionalidad esté disponible antes de presentar un nuevo problema.

¿Qué sigue?

Cuando presentamos nuestras versiones preliminares nativas hace unos meses, tuvimos que gestionar las expectativas sobre el estado del proyecto. Ahora estamos en un punto en el que podemos decir con confianza que la experiencia nativa de TypeScript es real, estable y lista para un uso más amplio. Pero aún estamos buscando retroalimentación.

Por lo tanto, le animamos a instalar la extensión de vista previa nativa de VS Code, usar el paquete del compilador @typescript/native-preview donde pueda, y probarlo en sus proyectos. Háganos saber qué piensa y envíe problemas en nuestro repositorio de GitHub para ayudarnos a solucionar cualquier problema y priorizar qué trabajar a continuación.

¡Estamos emocionados por el futuro de TypeScript y no podemos esperar para entregar TypeScript 7.0 a sus manos!

¡Feliz programación!