Tecnologia

TypeScript 7.0 compila 10 vezes mais rápido — Vue, Svelte e Angular têm de esperar

Adrian Kessler

O compilador TypeScript dentro do VS Code demorava 125 segundos a verificar uma cópia recente 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 — portou todo o runtime do compilador de JavaScript para Go, desbloqueando paralelismo multi-core que um motor JavaScript não consegue oferecer.

O port não é uma reescrita de raiz. 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, traduzidos para uma linguagem que consegue distribuir trabalho pelos núcleos da CPU. A equipa escolheu Go porque a base de código JavaScript original, muito baseada em funções, mapeava-se para os idiomas de Go quase um-para-um. O novo runtime também introduz flags para controlo explícito de paralelismo: passar –checkers 8 numa workstation moderna empurra a build do VS Code para uma melhoria de 16,7x face ao TypeScript 6. A verificação de tipos no CI da Slack caiu de 7,5 minutos para 1,25. A build da Bluesky passou de 24,3 segundos para 2,8. O padrão mantém-se em várias bases de código: os ganhos aumentam à medida que o tamanho do projeto cresce, porque o teto agora é o hardware, não o runtime.

O TypeScript 7.0 é lançado sem uma API programática pública — a interface que as ferramentas de build usam quando chamam o compilador a partir do seu próprio código. Todos os verificadores de tipos de templates dos principais frameworks web dependem dela. O Volar do Vue, o serviço de linguagem do Svelte, o MDX, o verificador de templates do Angular: nenhum 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 de substituição está planeada para o TypeScript 7.1, previsto para outubro. Projetos que usem qualquer um desses frameworks ou ferramentas não devem atualizar ainda.

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

Projetos que ultrapassam esses obstáculos — aplicações Node.js ou Deno simples, apps de browser não construídas num sistema de templates de framework e bibliotecas sem dependências de API programática — podem atualizar com uma única alteração no package.json. O suporte do editor segue a mesma divisão: o VS Code tem uma extensão dedicada TypeScript 7 disponível agora, e o suporte integrado está a concluir a 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 a trabalhar nessa transição.

O TypeScript 7.1, atualmente previsto para outubro de 2026, trará a nova API do compilador de que as ferramentas do Vue, Svelte, Angular e MDX precisam antes de poderem migrar. Quando chegar, os ganhos de desempenho do port de 15 meses para Go atingirão todo o ecossistema. Até lá, as páginas de projeto do Volar, SvelteKit e Angular recomendam manter-se no TypeScript 6.0.x.

Etiquetas: , , ,

Discussão

Existem 0 comentários.