Tecnologia

TypeScript 7.0 compila 10 vezes mais rápido — Vue, Svelte e Angular precisam esperar

Adrian Kessler

O compilador TypeScript dentro do VS Code costumava gastar 125 segundos para verificar uma cópia nova da própria base de código do editor. O TypeScript 7.0 faz o mesmo trabalho em 10,6 segundos. A Microsoft não otimizou o código antigo — ela portou todo o runtime do compilador de JavaScript para Go, liberando paralelismo multi-core que um motor JavaScript não consegue oferecer.

A migração não é uma reescrita do zero. Os engenheiros da Microsoft descreveram a lógica de verificação de tipos como estruturalmente idêntica à do TypeScript 6.0 — as mesmas regras, o mesmo comportamento, traduzidas para uma linguagem que pode distribuir o trabalho entre núcleos da CPU. A equipe escolheu Go porque a base de código JavaScript original, pesada em funções, mapeava quase um para um com os idiomas de Go. O novo runtime também introduz flags para controle explícito de paralelismo: passar –checkers 8 em uma workstation moderna leva a compilação do VS Code a uma melhoria de 16,7x em relação ao TypeScript 6. A verificação de tipos no CI do Slack caiu de 7,5 minutos para 1,25. A compilação do Bluesky foi de 24,3 segundos para 2,8. O padrão se mantém em todas as bases de código: os ganhos se acumulam à medida que o tamanho do projeto cresce, porque o teto agora é o hardware, não o runtime.

O TypeScript 7.0 chega sem uma API programática pública — a interface que as ferramentas de build usam quando chamam o compilador de dentro do próprio código. O verificador de tipos de template de todo grande framework web depende dela. O Volar do Vue, o serviço de linguagem do Svelte, o MDX, o verificador de template do Angular: nenhum deles funciona com o TypeScript 7.0. Ferramentas como ts-morph e ts-jest, que expõem os internos do compilador TypeScript para refatoração e testes, também estão quebradas. A Microsoft confirmou que a API substituta está planejada para o TypeScript 7.1, previsto para outubro. Projetos que usam qualquer um desses frameworks ou ferramentas não devem atualizar ainda.

Configurações de projetos mais antigos enfrentam um conjunto separado de barreiras. O TypeScript 7.0 transforma opções que a versão 6.0 descontinuou em erros de build: alvos de compilação ES5, formatos de módulo AMD e SystemJS, resolução de módulo clássica e a palavra-chave assert em declarações de import fazem o build falhar completamente. O novo tsconfig.json padrão não carrega mais automaticamente pacotes @types, o que significa que projetos que dependiam da descoberta de tipos ambiente sem declarar explicitamente suas dependências de tipo falharão silenciosamente no momento da importação. A Microsoft fornece um shim de compatibilidade typescript@npm:@typescript/typescript6 para projetos que precisam manter as ferramentas do TS6 funcionando junto com o novo compilador.

Projetos que superam esses obstáculos — aplicações Node.js ou Deno simples, apps de navegador não construídos sobre um sistema de template de framework e bibliotecas sem dependências de API programática — podem atualizar com uma única alteração no package.json. O suporte dos editores segue a mesma divisão: o VS Code tem uma extensão dedicada do TypeScript 7 disponível agora, e o suporte integrado está completando sua migração para o Language Server Protocol, substituindo o design mais antigo do TSServer. O WebStorm e outros editores que também dependiam do TSServer ainda estão trabalhando nessa transição.

O TypeScript 7.1, atualmente previsto para outubro de 2026, trará a nova API do compilador que as ferramentas do Vue, Svelte, Angular e MDX precisam antes de poderem migrar. Quando chegar, os ganhos de desempenho da migração de 15 meses para Go alcançarão todo o ecossistema. Até lá, as páginas dos projetos Volar, SvelteKit e Angular recomendam permanecer no TypeScript 6.0.x.

Tags: , , ,

Discussão

Há 0 comentários.