TypeScript 7 chegou: um port nativo 10x mais rápido, escrito em Go cover image

TypeScript 7 chegou: um port nativo 10x mais rápido, escrito em Go

A Microsoft anunciou hoje que o TypeScript 7 está disponível de forma geral. Não se trata de um release incremental com pequenos ajustes de sintaxe. É um port nativo do compilador e do language service do TypeScript, reescrito em Go, pensado para entregar cerca de 10x mais desempenho em projetos reais.

Se você já perdeu tempo esperando o tsc terminar em um monorepo grande, ou viu a IDE engasgar enquanto o language service tentava acompanhar, este lançamento ataca exatamente esse ponto. A equipe do TypeScript mantém a linguagem que você já conhece e troca o motor por baixo dela.

O que mudou de verdade

Por mais de uma década, o TypeScript foi implementado principalmente em TypeScript, compilado para JavaScript e distribuído como tsc. Essa arquitetura facilitou contribuições e manteve o compilador próximo ao sistema de tipos que ele implementa. Também significou que cada checagem de tipos, cada resolução de módulos e cada etapa de emit rodava no runtime Node.js/V8, com o custo de uma base grande em JavaScript operando sobre grafos complexos de tipos.

O TypeScript 7 leva o núcleo do compilador e do language service para Go. Go oferece desempenho nativo, concorrência eficiente e binários compactos, sem exigir que quem desenvolve apliqueções mude a forma de escrever TypeScript. Seus arquivos continuam com a mesma sintaxe. Seu tsconfig.json continua no comando. A diferença está na velocidade.

Na prática, o port nativo foca nos caminhos mais críticos:

  • Checagem de tipos em grafos grandes de projeto
  • Resolução de módulos em monorepos e workspaces com path mapping
  • Rebuilds incrementais no watch mode e em pipelines de CI
  • Operações do language service que alimentam recursos do editor como ir para definição, renomear e quick fixes

Benchmarks iniciais da Microsoft e testes da comunidade mostram melhorias de ordem de magnitude em bases médias e grandes. Um projeto que levava 40 segundos para type-check pode terminar em 4. Um language service lento ao salvar pode parecer instantâneo. Os números exatos dependem de hardware, formato do projeto e configuração, mas a direção é clara: o TypeScript deixa de pagar um imposto alto por ser self-hosted em JavaScript.

Por que Go, e por que agora

Escolher Go para reescrever o compilador é uma decisão pragmática. Go compila rápido, gera binários estáticos e lida bem com trabalho paralelo. Isso importa quando você percorre milhões de nós de tipo e resolve grafos de dependência com centenas de pacotes.

O timing também reflete o uso atual do TypeScript. Ele virou a camada de tipos padrão em frameworks frontend, serviços backend, ferramentas de infraestrutura e, cada vez mais, em cadeias de tooling nativas. Apps Nuxt, SFCs Vue, backends Laravel com Inertia ou APIs tipadas a partir de schemas compartilhados, e microsserviços Node.js dependem de feedback rápido. Quando o compilador é lento, todo o time paga repetidamente.

A Microsoft tem enquadrado o lançamento como evolução, não como fork da linguagem. O TypeScript 7 mira as mesmas semânticas que os devs esperam. A prioridade é compatibilidade, depois desempenho, e só então nova superfície de API. Essa contenção facilita a adoção no ecossistema.

O que isso significa para quem usa Nuxt e Vue

Se você trabalha com Nuxt e Vue, o TypeScript 7 aparece nos pontos que você já usa todo dia.

Desenvolvimento local fica mais ágil quando nuxi dev ou fluxos com Vite disparam checagens type-aware. Projetos Nuxt 3 e Nuxt 4 costumam combinar type check de SFC, auto-imports e rotas de servidor. Cada camada adiciona trabalho ao compilador. Um motor nativo mais rápido reduz o intervalo entre salvar o arquivo e ver diagnósticos corretos.

A experiência no editor melhora porque o language service compartilha o mesmo núcleo do tsc. Renomear símbolos em um app Nuxt com muitos composables, ou ir para a definição através de tipos gerados, fica perceptivelmente mais rápido em bases maiores.

Pipelines de CI ganham ainda mais. Rodar vue-tsc --noEmit ou um type check em monorepo é gate comum antes do merge. Cortar minutos de cada pull request se acumula em times inteiros.

Para quem usa Laravel e compartilha tipos com frontend Nuxt via clients gerados ou interfaces mantidas à mão, o ganho é o mesmo: menos espera, iteração mais curta, menos checks pulados por serem lentos demais.

Instalação e migração

Subir para o TypeScript 7 deve parecer familiar. Atualize o pacote do compilador e confirme que sua toolchain suporta o binário nativo na sua plataforma.

npm install typescript@7 --save-dev
# ou
pnpm add -D typescript@7

Depois valide os scripts existentes:

npx tsc --version
npx tsc --noEmit

A maioria dos times pode tratar a migração como upgrade direto, mas validação sensata ainda vale:

  • Rode o script completo de type check localmente e no CI
  • Confirme que a extensão do editor reconhece o novo language service
  • Verifique plugins e wrappers como vue-tsc, tsx ou ferramentas de build que embutem TypeScript
  • Fique atento a pequenas diferenças na ordem ou formatação de diagnósticos; a semântica deve ser a mesma

Em monorepos, atualize primeiro a versão na raiz e depois alinhe pacotes que fixam sua própria versão do compilador. Versões misturadas são causa frequente de comportamento estranho no editor.

Compatibilidade e prontidão do ecossistema

A pergunta mais comum no dia do lançamento é se a stack está pronta. Mantenedores de frameworks costumam publicar compatibilidade rápido porque a API pública do tsc permanece estável. Ainda assim, nem toda ferramenta redistribui o compilador no dia zero.

Antes de atualizar repositórios de produção, confira as release notes de:

  • Integrações com Vite e Nuxt
  • Parser e plugins do ESLint typescript-eslint
  • Jest, Vitest e alternativas ao ts-node que dependem de APIs do compilador
  • Transformers customizados ou plugins de build que acessam hooks internos

Times com tooling pesado devem reservar tempo para verificação. Quem usa setups padrão de Nuxt, Vue e Node tende a ter o caminho mais tranquilo.

Dicas de performance após o upgrade

Um compilador mais rápido recompensa boa configuração. O TypeScript 7 não elimina a necessidade de limites claros entre projetos.

  • Use project references para dividir workspaces grandes
  • Habilite builds incrementais e mantenha caches de build info no CI quando fizer sentido
  • Prefira padrões explícitos de include e exclude em vez de varrer repositórios inteiros
  • Revise padrões de tipo caros, como conditional types profundamente aninhados em libs utilitárias
  • Rode checks focados no dia a dia e checks completos antes de release

O port nativo barateia cada unidade de trabalho. Uma boa estrutura de projeto reduz a quantidade total de trabalho. Junte os dois e a melhoria parece dramática.

O que não muda

O TypeScript 7 é um release de plataforma focado em desempenho. Não é ordem para reescrever aplicações, trocar sistemas de módulos ou adotar sintaxe nova da noite para o dia. Interfaces, generics, template literal types, decorators e os padrões do dia a dia em composables Vue e serviços Node continuam iguais.

Essa estabilidade é o ponto. A Microsoft aposta que devs querem TypeScript mais rápido sem penhasco de migração. Novos recursos da linguagem continuarão chegando, mas sobre um motor feito para escala.

Um takeaway prático para times

Se você lidera um time que entrega apps Nuxt ou Vue com TypeScript, trate o TypeScript 7 como infraestrutura que vale atualizar cedo. O retorno aparece na responsividade do editor, na duração do CI e no moral do time. Menos troca de contexto esperando type check significa mais tempo em produto.

Comece com um repositório representativo: um app Nuxt médio com rotas de servidor, composables e tipos gerados é ideal. Meça o tempo de type check antes e depois. Compartilhe o resultado internamente. Depois espalhe o bump de versão pelo monorepo ou pelos serviços com confiança.

O TypeScript precisava de um port nativo para acompanhar a escala dos projetos web modernos. Com o TypeScript 7, esse port chegou, escrito em Go, pronto para uso diário. Atualize, valide e aproveite um compilador que finalmente acompanha a velocidade que a linguagem merece.