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:
- Anúncio de lançamento
- versão 4.2 no GitHub
- Alterações no código-fonte do TypeScript entre as versões 4.1.5 e 4.2.2
- Playground no navegador do TypeScript com a versão 4.2.2 pré-carregada
- página inicial do TypeScript, typescriptlang.org
- Documentação do TypeScript
A postagem Novidades no TypeScript 4.2 apareceu primeiro em LogRocket Blog .