A versão 4.2 do TypeScript foi lançada em 23 de fevereiro de 2021 e com ela uma série de recursos interessantes, correções de bugs e melhorias de desempenho. Aqui estão os mais importantes que você deve conhecer.

Principais aprimoramentos do TypeScript 4.2

Elementos rest mais flexíveis em tipos de tupla

Anterior a 4.2, os elementos restantes só podiam aparecer no final do tipo de tupla. Se estivéssemos modelando o estado de um jogo para dois jogadores, por exemplo, poderíamos usar este tipo de tupla para conter nossos dois Player se uma lista dos Move s eles joguei:

 deixe gameState: [Player, Player,... Move []];

Com o 4.2, os Move s não precisam estar no final do tipo; eles podem estar no meio ou mesmo no início. Se desejar, podemos agora expandir nosso tipo da seguinte maneira, para incluir a vez de qual jogador é. Para maior clareza, tiraremos vantagem do suporte do TypeScript para elementos de tupla rotulados (o que não é novo em 4.2):

 let gameState: [player1: Player, player2: Player,... moves: Move [], currentTurn: number];

Maior visibilidade de quais arquivos estão incluídos em seu programa compilado

O compilador do TypeScript ( tsc ) agora inclui um novo sinalizador, --explainFiles , que produz uma lista de arquivos incluídos na compilação, bem como o raciocínio básico por trás do porquê eles está lá, em um formato de texto simples. Isso pode ser muito útil ao desenvolver ou ajustar a configuração do compilador em tsconfig.json .

Este recurso é um bom primeiro passo para depurar problemas de tempo de compilação e espero ficar mais robusto e poderoso em versões futuras (por exemplo, um formato de saída JSON para ingestão em outras ferramentas para análises mais avançadas).

Dada uma configuração padrão do TypeScript e um arquivo index.ts com um simples console.log ('hello, world!'); , aqui está um exemplo de saída de o sinalizador --explainFiles :

 node_modules/typescript/lib/lib.d.ts Biblioteca padrão
node_modules/typescript/lib/lib.es5.d.ts Biblioteca referenciada por meio de'es5'do arquivo'node_modules/typescript/lib/lib.d.ts'
node_modules/typescript/lib/lib.dom.d.ts Biblioteca referenciada por meio de'dom'do arquivo'node_modules/typescript/lib/lib.d.ts'
node_modules/typescript/lib/lib.webworker.importscripts.d.ts Biblioteca referenciada por meio de'webworker.importscripts'do arquivo'node_modules/typescript/lib/lib.d.ts'
node_modules/typescript/lib/lib.scripthost.d.ts Biblioteca referenciada por meio de'scripthost'do arquivo'node_modules/typescript/lib/lib.d.ts'
index.ts Arquivo raiz especificado para compilação

Experimente você mesmo usando este repositório de exemplo (completo com devcontainer.json ) no GitHub .

Melhor suporte para variáveis ​​desestruturadas não utilizadas

Ao desestruturar tuplas ou matrizes, há momentos em que os elementos em que você está interessado não aparecem no início da lista. Nestes casos, nomes de variáveis ​​“descartáveis” como _ ou a , b , c , etc., são usados ​​para os elementos sem interesse.

Com a opção do compilador noUnusedLocals ativada, no entanto, essas variáveis ​​locais não utilizadas fariam com que o TypeScript gerasse um erro até a versão 4.2.

Agora, simplesmente adicione _ aos nomes das variáveis ​​não utilizadas e o TypeScript irá felizmente ignorar essas variáveis ​​e não lançará um erro se elas não forem utilizadas. Por exemplo, este novo recurso seria particularmente útil ao extrair bits de dados das linhas de uma planilha CSV:

 função * getCsvRows (): Gerador  {/*... */} para (linha constante de getCsvRows ()) { //Destrói a linha, utilizando apenas a 1ª, 4ª e 6ª colunas. const [id, _1, _2, nome, _3, país]=linha; //... faça algo com id, nome e país
}

Prefixar nomes de variáveis ​​não usados ​​com _ é uma convenção comum em situações como essas; este é um exemplo de autores de ferramentas construindo cuidadosamente e apoiando o comportamento existente de seus usuários.

Sistema de tipo mais inteligente e melhorias de desempenho

Como acontece com qualquer versão do TypeScript, também houve uma série de aprimoramentos menores que não são inovadores por si só, mas tornam o TypeScript cada vez melhor e mais confortável de usar. Para citar apenas alguns:

  • Um erro útil ao tentar usar o operador in em um tipo primitivo. Isso normalmente é um erro de tempo de execução (em JavaScript), mas agora é detectado em tempo de compilação em TypeScript
  • Um limite interno para o tamanho da tupla em conjunto com a sintaxe de propagação, para melhorar o desempenho da compilação
  • Melhor análise e interpretação de arquivos JavaScript vanilla
  • Um novo sinalizador chamado --noPropertyAccessFromIndexSignature que pode ajudar a reduzir erros de erros ortográficos de nomes de propriedades de objetos em certas situações

Mais detalhes e recursos

Uma lista completa de todas as melhorias pode ser vista na página de lançamentos do projeto TypeScript em GitHub , bem como o anúncio de lançamento no Blog do TypeScript . Esses são os principais destaques do lançamento do TypeScript 4.2. Para se aprofundar nas mudanças ou aprender mais sobre TypeScript em geral, verifique os seguintes recursos:

A postagem Novidades no TypeScript 4.2 apareceu primeiro em LogRocket Blog .

Source link