Lançado o TypeScript 7.0 Beta - TS cerca de 10 vezes mais rápido com port nativo em Go
- Nova implementação nativa com o compilador TypeScript existente portado para Go
- Embora seja “beta”, é destacado como estável o suficiente para já ser testado em trabalhos do dia a dia e em CI
- A nova base de código não é uma reescrita (
rewrite), mas sim um port sistemático da implementação existente
- A lógica de verificação de tipos é estruturalmente igual à do TypeScript 6.0
- Desempenho que às vezes é cerca de 10 vezes mais rápido em comparação com o TypeScript 6.0
- Baseado no desempenho de código nativo + paralelização com memória compartilhada
- Já em uso em codebases com milhões de LOC, internas e externas à Microsoft
- Testado antecipadamente com Bloomberg, Canva, Figma, Google, Linear, Notion, Slack, Vercel e outras
- Além da CLI, a experiência no editor também foi melhorada para ficar mais leve e rápida
Como usar
- No momento, a instalação é feita como pacote separado
npm install -D @typescript/native-preview@beta
- Execute
tsgo no lugar do tsc atual
- No futuro, a versão estável deverá voltar a ser distribuída com o pacote
typescript e o entrypoint tsc
Uso em paralelo com o TypeScript 6.0
- O 7.0 Beta é fornecido como
@typescript/native-preview + tsgo
- É possível executar
tsc e tsgo lado a lado e comparar
- Na versão estável, o TS7 voltará a usar o nome
tsc
- Também será oferecido o pacote
@typescript/typescript6 para compatibilidade com o TS6
- Ferramentas existentes que dependem da API do TypeScript poderão continuar usando a API do TS6 por enquanto
Limitações importantes
- O 7.0 Beta está próximo de estar pronto para produção, mas ainda não há uma API programática estável
- A API estável é esperada no mínimo após o TypeScript 7.1, com meta para daqui a alguns meses
- Ferramentas/plugins que dependem diretamente da API do TypeScript exigem cuidado na transição
Paralelização
- Paralelização em várias etapas, como parsing, verificação de tipos e emit
- Adicionada a opção
--checkers para ajustar o número de workers de verificação de tipos
- Adicionada a opção
--builders para paralelizar builds com project references
- Adicionada a opção
--singleThreaded para execução em thread única
- O efeito é grande em codebases extensas e monorepos, mas aumentar o paralelismo também pode elevar o uso de memória
Compatibilidade com base no TypeScript 6.0
- O TypeScript 7.0 tem como objetivo compatibilidade com o comportamento de verificação de tipos/CLI do TypeScript 6.0
- O objetivo é que códigos que compilam limpos no TS6 também compilem da mesma forma no TS7
- Porém, novos valores padrão do TS6 e a limpeza de recursos obsoletos também são aplicados
- Mudanças nos valores padrão de
strict, module, rootDir, types etc. podem ser percebidas em projetos existentes
- Em especial, as mudanças em
rootDir e types precisam ser verificadas na migração
- Para projetos que usam configurações antigas de target/module ou opções deprecated, é recomendado primeiro passar pela migração para o TS6
Mudanças em JavaScript/JSDoc
- O suporte a JS foi reorganizado para ficar mais consistente com a forma de análise de arquivos TypeScript
- Foram removidos tratamentos especiais para parte da sintaxe em estilo JSDoc/Closure e para padrões antigos de JS
- Codebases baseadas em JS + JSDoc exigem verificação separada
Suporte de editor
- Disponível a extensão TypeScript Native Preview para VS Code
- Como usa a mesma base da CLI, o editor também recebe os mesmos ganhos de desempenho
- Suporte a auto-import, hover, inlay hints, code lens, JSX linked editing etc.
- Como é baseado em LSP, também é fácil de aproveitar em outros editores/ferramentas modernos
Próximos planos
- Está prevista uma implementação mais eficiente de
--watch
- Está previsto trabalho para alcançar parity no declaration emit de arquivos JS
- Está previsto reduzir a diferença de recursos no editor
- A API programática estável virá após o TypeScript 7.1
- A versão estável do TypeScript 7.0 é esperada em cerca de 2 meses
- O RC deve ser lançado algumas semanas antes
Ainda não há comentários.