TypeScript 7.0 Aponta para Ganhos de Performance de Até 10x com Migração para Go
A equipe de desenvolvimento está reescrevendo partes da base de código para Go, visando aceleração nativa e paralelização, além de orientar sobre práticas de código otimizado para desenvolvedores.

A próxima versão do TypeScript, a 7.0, promete trazer melhorias significativas de performance, com a equipe de desenvolvimento trabalhando na portabilidade da base de código existente para a linguagem Go. Essa mudança estratégica visa aproveitar a velocidade nativa do código e a capacidade de paralelização oferecida por Go, com prévias nativas já demonstrando ganhos de velocidade de até 10 vezes em certas operações de compilação.
A iniciativa de reescrita da base de código para Go servirá como alicerce fundamental para o TypeScript 7.0. Embora os desenvolvedores sejam incentivados a explorar as prévias disponíveis no repositório `typescript-go` para feedback, a equipe ressalta a importância de continuar utilizando as ferramentas atuais para investigar gargalos de desempenho, como o rastreamento de performance com versões como TypeScript 5.9 ou 6.0, que ajudam a identificar as partes mais lentas do código. A coleta de feedback sobre essas prévias nativas é crucial para o aprimoramento contínuo.
Além das inovações no núcleo da linguagem, o projeto enfatiza que os usuários podem e devem adotar práticas de código e configurações que garantam compilações e experiências de edição mais rápidas. A antecipação na adoção dessas práticas é fundamental. Existem técnicas comuns para investigar compilações lentas, soluções frequentes e métodos para auxiliar a equipe do TypeScript na apuração de problemas mais complexos, caso as soluções iniciais não sejam suficientes.
Entre as recomendações de codificação, destaca-se a preferência por `Interfaces` em vez de `Intersections` para tipos compostos. Enquanto um simples `type alias` para um tipo de objeto se comporta de forma similar a uma interface, as diferenças surgem na composição de dois ou mais tipos. Interfaces criam um tipo de objeto plano único que detecta conflitos de propriedade, cruciais para resolução, e exibem melhor consistência, além de terem o relacionamento de tipos cacheado. Intersections, por outro lado, mesclam propriedades recursivamente, podendo gerar o tipo `never` em alguns casos, e não possuem cache de relacionamentos de tipo de forma tão eficiente, o que pode impactar a performance.