O TypeScript 5.7, a última versão planejada da variante JavaScript da Microsoft com sintaxe para tipos, acaba de ser lançada em uma versão de produção. Essa nova versão traz melhorias significativas no sistema de tipos da linguagem, incluindo a capacidade de relatar erros quando variáveis nunca foram inicializadas.
O anúncio da disponibilidade geral da versão 5.7 foi feito em 22 de novembro, após um release candidate em 8 de novembro e um beta em 9 de outubro. A nova versão pode ser instalada por meio do NPM usando o comando npm install -D typescript
.
Verificações de Variáveis Não Inicializadas
Uma das principais novidades do TypeScript 5.7 é a melhoria nas verificações para variáveis não inicializadas. Anteriormente, o sistema de tipos do TypeScript nem sempre conseguia detectar corretamente quando uma variável não havia sido inicializada. Por exemplo, se a variável não inicializada fosse acessada em uma função separada, o TypeScript teria uma visão otimista de que a variável seria inicializada antes de ser usada.
Com o TypeScript 5.7, essa situação foi abordada. Agora, o sistema de tipos pode relatar erros quando as variáveis nunca foram inicializadas, mesmo que elas possam ter sido inicializadas em algum momento. Essa melhoria ajuda a evitar bugs difíceis de detectar e garante que os desenvolvedores tenham mais confiança no código que escrevem.
Reescrita de Importações Relativas
Outra novidade interessante no TypeScript 5.7 é a nova opção do compilador --rewriteRelativeImportExtensions
. Quando um caminho de importação é relativo e termina com uma extensão TypeScript (.ts
, .tsx
, .mts
, .cts
), e é um arquivo de não declaração, o compilador reescreverá o caminho para a extensão JavaScript correspondente (.js
, .jsx
, .mjs
, .cjs
).
Essa funcionalidade permite que os desenvolvedores escrevam código TypeScript que possa ser executado localmente e, posteriormente, ser compilado em código JavaScript quando estiver pronto para ser implantado. Isso facilita o desenvolvimento e a transição entre os ambientes de desenvolvimento e produção.
Outras Melhorias e Novos Recursos
Além das melhorias no sistema de tipos e na reescrita de importações, o TypeScript 5.7 também traz outros recursos interessantes:
Suporte a ECMAScript 2024
O TypeScript 5.7 oferece suporte à opção de compilador --target es2024
, permitindo que os desenvolvedores tenham como alvo os tempos de execução do ECMAScript 2024.
Cache de Compilação V8 no Node.js
O TypeScript 5.7 agora oferece suporte ao cache de compilação V8 no Node.js, o que pode melhorar o desempenho da compilação em determinados cenários.
Comportamento Mais Consistente para Métodos em Classes
O TypeScript agora tem um comportamento mais consistente para métodos em classes quando estes são declarados com nomes de propriedades computados não literais.
Melhorias na Inferência de Tipos
Quando uma expressão de função é contextualmente tipada por uma assinatura que retorna um tipo genérico, o TypeScript agora fornece apropriadamente um any
erro implícito em noImplicitAny
, mas fora de strictNullChecks
.
Localização de Arquivos de Configuração
Quando um arquivo TypeScript é carregado em um editor usando o TSServer (como o Visual Studio ou o Visual Studio Code), o editor tentará encontrar o arquivo tsconfig.json
relevante que "possui" o arquivo.
Importação de Arquivos .json
Ao importar de um arquivo .json
no TypeScript com --module nodenext
, o TypeScript agora aplicará certas regras para evitar erros de tempo de execução.
Conclusão
O TypeScript 5.7 traz melhorias significativas para o sistema de tipos da linguagem, com a adição de verificações mais robustas para variáveis não inicializadas. Além disso, a nova opção de reescrita de importações relativas e os diversos outros recursos e melhorias tornam essa versão ainda mais poderosa e útil para os desenvolvedores que trabalham com TypeScript.
À medida que a linguagem continua a evoluir, é importante que os desenvolvedores fiquem atentos a essas atualizações e aproveitem os benefícios que elas trazem para seus projetos. O TypeScript 5.7 é mais uma prova do compromisso da Microsoft em tornar o TypeScript uma ferramenta cada vez mais eficiente e confiável para o desenvolvimento de aplicações JavaScript.