TypeScript 5.7: O Que Há de Novo na Versão Beta

O TypeScript 5.7 está disponível em versão beta, trazendo uma série de melhorias e novas funcionalidades que aprimoram a experiência dos desenvolvedores. Com foco em eficiência, compatibilidade e correções de erros, essa nova versão promete simplificar ainda mais o desenvolvimento em JavaScript e TypeScript. Vamos explorar cada uma das novidades mais importantes do TypeScript 5.7.
Verificações para Variáveis Nunca Inicializadas
Uma das grandes melhorias no TypeScript 5.7 é a verificação mais rígida para variáveis que nunca foram inicializadas. Em versões anteriores, o TypeScript já conseguia detectar quando uma variável não tinha sido corretamente inicializada em todos os fluxos de execução, mas essa análise tinha limitações, especialmente quando a variável era usada dentro de funções internas.
Com o TypeScript 5.7, o compilador agora consegue identificar variáveis que nunca foram inicializadas em qualquer parte do código, reportando um erro sempre que uma variável for utilizada antes de ser corretamente inicializada.
function foo() {
let result: number;
function printResult() {
console.log(result); // erro: A variável 'result' é usada antes de ser inicializada
}
}
Reescrita de Caminhos Relativos
Outra novidade interessante no TypeScript 5.7 é a capacidade de reescrever extensões de arquivos nos caminhos relativos. Muitas ferramentas permitem rodar código TypeScript diretamente, sem precisar gerar arquivos JavaScript. No entanto, ao gerar o JavaScript de saída, os caminhos de importação de arquivos .ts
precisam ser convertidos para caminhos de arquivos .js
. Com a nova opção --rewriteRelativeImportExtensions
, o compilador faz isso automaticamente.
// Sob --rewriteRelativeImportExtensions...
import * as foo from "./foo.ts"; // será reescrito como "./foo.js"
Suporte para --target es2024
e --lib es2024
O TypeScript 5.7 agora permite que os desenvolvedores façam o targeting para ECMAScript 2024 com as novas opções --target es2024
e --lib es2024
. Isso inclui suporte para novas funcionalidades como SharedArrayBuffer
, Object.groupBy
, Map.groupBy
e Promise.withResolvers
. Essas funcionalidades oferecem mais flexibilidade e poder para trabalhar com buffers e promessas no código.
interface Uint8Array<TArrayBuffer extends ArrayBufferLike = ArrayBuffer> {
// ...
}
Importação de JSON Validada no Módulo nodenext
O suporte para o módulo nodenext
foi aprimorado no TypeScript 5.7, e agora é obrigatório que os arquivos JSON sejam importados com o atributo type: "json"
. Isso ajuda a evitar erros de tempo de execução ao trabalhar com JSON dentro do código TypeScript.
import myConfig from "./myConfig.json" with { type: "json" };
Otimizações no Cache de Compilação do Node.js
Com a introdução do suporte ao cache de compilação no Node.js 22, o TypeScript 5.7 agora pode reutilizar parte do trabalho de parsing e compilação feito na primeira execução. Isso resulta em um ganho de performance significativo, com uma melhoria de até 2,5 vezes na execução de comandos como tsc --version
.
Mudanças Comportamentais Notáveis
O Typescript 5.7 introduziu algumas mudanças comportamentais importantes. Entre elas, está o fato de que Arrays Tipados agora são genéricos sobre ArrayBufferLike
, trazendo maior flexibilidade para trabalhar com diferentes tipos de buffers. Além disso, métodos declarados com nomes de propriedades computadas agora geram assinaturas de índice mais consistentes em classes.
declare const symbolMethodName: symbol;
export class A {
[symbolMethodName]() { return 1; }
}
O Que Vem a Seguir?
O TypeScript 5.7 já está “estável em termos de funcionalidades”, o que significa que as próximas versões se concentrarão em correções de bugs e melhorias menores. Se você deseja experimentar as últimas novidades do TypeScript, pode baixar o TypeScript 5.7 Beta através do npm e começar a explorar essas funcionalidades agora mesmo.
npm install -D typescript@beta
Além disso, você pode acompanhar a evolução da versão acessando os planos de iteração e as builds noturnas disponíveis no site oficial do TypeScript.
Mais detalhes sobre essa nova versão do TypeScript no anúncio oficial.