TypeScript 5.4, uma atualização planejada para a variante JavaScript fortemente tipada da Microsoft, atingiu a disponibilidade beta. Novos recursos incluem estreitamento preservado em fechamentos de funções criados após a última atribuição e um tipo NoInfer para bloquear inferências para tipos válidos, mas indesejados.

Lançado em 29 de janeiro, o TypeScript 5.4 pode ser acessado via NuGet ou NPM. No NPM, use o seguinte comando:

npm install -D typescript@beta

TypeScript 5.4 torna o estreitamento mais inteligente. Detalhando a melhoria, a Microsoft disse que um problema comum no TypeScript era que os tipos restritos nem sempre eram preservados nos fechamentos de funções. No TypeScript 5.4, quando parâmetros e let variáveis ​​são usadas em funções não içadas, o verificador de tipo procurará um último ponto de atribuição. Se um for encontrado, o TypeScript pode restringir de fora da função que o contém.

TypeScript 5.4 também apresenta um NoInfer<T> tipo de utilitário. Cercando um tipo em NoInfer<…> dá um sinal ao TypeScript para combinar os tipos internos para encontrar candidatos para inferência de tipos. O tipo de utilitário resolve um problema no qual o TypeScript pode inferir argumentos de tipo de tudo o que é passado. Mas nem sempre é claro qual é o melhor tipo a ser inferido, levando o TypeScript a rejeitar chamadas válidas e cometer outros erros.

Outras melhorias no TypeScript 5.4:

  • Declarações são adicionadas para o novo JavaScript groupBy e Map.groupBy métodos estáticos. Object.groupBy leva um iterável e uma função que decide em qual grupo cada elemento deve ser colocado. A função deve criar uma chave para cada grupo distinto, e Object.groupBy usa essa chave para criar um objeto onde cada chave é mapeada para um array contendo o elemento original. Map.groupBy é semelhante, mas produz um mapa em vez de um objeto simples.
  • Foi adicionado suporte para require( ) liga --moduleResolution bundler e --module preserve.
  • Atributos e asserções de importação agora são verificados em relação ao global ImportAttributes tipo. Isso significa que os tempos de execução agora podem descrever com mais precisão os atributos de importação.
  • Uma correção rápida permite adicionar um novo parâmetro a funções chamadas com muitos argumentos.
  • O TypeScript agora reduz as interseções com variáveis ​​de tipo e primitivas de forma mais agressiva, dependendo de como a restrição da variável de tipo se sobrepõe a essas primitivas.
  • Depreciações foram adicionadas no TypeScript 5.0, como target: ES3 código, NoImplcitUseStrict, charsete out. O TypeScript 5.4 provavelmente será a última versão em que a lista de descontinuações continuará funcionando normalmente.