Lanzan TypeScript 7.0 Beta - TS es ahora unas 10 veces más rápido gracias a un port nativo a Go
- Nueva implementación nativa que porta el compilador existente de TypeScript a Go
- Aunque es una “beta”, destacan que ya es lo bastante estable como para probarla de inmediato en el trabajo diario y en CI
- La nueva base de código no es una reescritura (
rewrite), sino un port sistemático de la implementación existente
- La lógica de verificación de tipos es estructuralmente igual a la de TypeScript 6.0
- En comparación con TypeScript 6.0, en algunos casos ofrece un rendimiento de alrededor de 10 veces más rápido
- Basado en el rendimiento de código nativo y en paralelización con memoria compartida
- Ya se usa en bases de código de millones de LOC, tanto dentro como fuera de Microsoft
- Se probó por adelantado con Bloomberg, Canva, Figma, Google, Linear, Notion, Slack, Vercel y otras empresas
- Además del CLI, también mejora la experiencia del editor para que sea más ligera y rápida
Cómo usarlo
- Por ahora se instala como un paquete aparte
npm install -D @typescript/native-preview@beta
- Ejecuta
tsgo en lugar del tsc existente
- Más adelante, la versión estable volverá a distribuirse con el paquete
typescript y el entrypoint tsc
Uso en paralelo con TypeScript 6.0
- La beta de 7.0 se ofrece como
@typescript/native-preview + tsgo
- Es posible ejecutar
tsc y tsgo en paralelo para compararlos
- En la versión estable, TS7 volverá a usar el nombre
tsc
- También se ofrece el paquete
@typescript/typescript6 para compatibilidad con TS6
- Las herramientas existentes que dependen de la API de TypeScript podrán seguir usando por un tiempo la configuración basada en la API de TS6
Limitaciones importantes
- La beta de 7.0 está cerca de ser production-ready, pero todavía no tiene una API programática estable
- La API estable se espera al menos a partir de TypeScript 7.1, con objetivo de lanzarla dentro de unos meses
- Las herramientas o plugins que dependen directamente de la API de TypeScript deben tener cuidado al migrar
Paralelización
- Se paralelizan varias etapas, como parsing, type checking y emit
- Se agrega la opción
--checkers para ajustar la cantidad de workers de type checking
- Se agrega la opción
--builders para paralelizar los builds con project references
- Se agrega la opción
--singleThreaded para ejecución en un solo hilo
- El efecto es grande en bases de código extensas y monorepos, pero al aumentar el paralelismo también puede subir el uso de memoria
Compatibilidad basada en TypeScript 6.0
- TypeScript 7.0 apunta a ser compatible con el type checking y el comportamiento del CLI de TypeScript 6.0
- El objetivo es que el código que compila limpio en TS6 también compile igual en TS7
- Sin embargo, también se aplican en conjunto los nuevos valores predeterminados de TS6 y la limpieza de funciones deprecated
- Los cambios en valores por defecto de
strict, module, rootDir, types y otros pueden sentirse en proyectos existentes
- En particular, los cambios en
rootDir y types deben revisarse al migrar
- En proyectos que usan targets o módulos antiguos, o opciones deprecated, se recomienda primero pasar por la migración a TS6
Cambios en JavaScript/JSDoc
- Se reorganiza el soporte de JS para que sea más consistente con la forma en que se analizan los archivos TypeScript
- Se elimina el tratamiento especial de parte de la sintaxis estilo JSDoc/Closure y de patrones JS antiguos
- Las bases de código basadas en JS + JSDoc requieren una revisión aparte
Soporte de editor
- Disponible la extensión TypeScript Native Preview para VS Code
- Como usa la misma base que el CLI, el editor también obtiene las mismas mejoras de rendimiento
- Soporta auto-import, hover, inlay hints, code lens, JSX linked editing y más
- Como está basado en LSP, es fácil aprovecharlo también en otros editores y herramientas modernos
Próximos planes
- Está prevista una implementación más eficiente de
--watch
- Está previsto trabajar en la paridad de declaration emit para archivos JS
- Está previsto cerrar la brecha en funciones del editor
- La API programática estable llegará después de TypeScript 7.1
- La versión estable de TypeScript 7.0 apunta a salir en unos 2 meses
- La RC se publicará unas semanas antes
Aún no hay comentarios.