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
groupByeMap.groupBymétodos estáticos.Object.groupByleva 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, eObject.groupByusa 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 bundlere--module preserve. - Atributos e asserções de importação agora são verificados em relação ao global
ImportAttributestipo. 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: ES3código,NoImplcitUseStrict,charseteout. O TypeScript 5.4 provavelmente será a última versão em que a lista de descontinuações continuará funcionando normalmente.
