11 puntos por dlwocks31 5 일 전 | Aún no hay comentarios. | Compartir por WhatsApp

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
    • npx tsgo --version
  • 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.

Aún no hay comentarios.