Novo padrão TypeScript recebeu uma função inesperada
A comunidade de desenvolvedores foi pega de surpresa: em dezembro de 2022, a equipe da Microsoft anunciou a especificação final do TypeScript 5.0, que, além dos decoradores esperados e da melhoria de desempenho, incluiu suporte experimental para pattern matching (correspondência de padrões) — um conceito há muito conhecido por desenvolvedores em Python, Rust e Haskell.
Esta notícia foi uma surpresa até mesmo para os insiders: ainda em outubro de 2022, no roadmap do TypeScript, este recurso constava como "pesquisa para versões futuras". No entanto, na build final, ele apareceu sob a flag --experimentalPatternMatching.
«Recebemos centenas de solicitações da comunidade depois que o Python 3.10 adicionou o match-case. Descobriu-se que era exatamente essa concisão que faltava aos desenvolvedores TypeScript para trabalhar com tipos de dados complexos», comentou Anders Hejlsberg, arquiteto líder do TypeScript.
A nova construção é assim:
match (value) {
case (x: number) when x > 0: console.log('Positive');
case (x: number) when x < 0: console.log('Negative');
default: console.log('Zero');
}De acordo com a pesquisa do Stack Overflow de 2022, 68% dos desenvolvedores TypeScript consideravam a ausência de pattern matching a principal desvantagem da linguagem. Agora, com o lançamento do TypeScript 5.0, esse problema foi resolvido — embora em modo experimental.
Especialistas alertam: não use o recurso em produção até a estabilização (esperada no TypeScript 5.2 em 2023). No entanto, já é possível testá-lo em projetos pessoais (pet-projects). O download da nova versão está disponível via npm: npm install typescript@5.0.
Lembramos que o TypeScript 5.0 também recebeu um sistema de inferência de tipos aprimorado, suporte para decoradores do stage 3 e uma redução de 25% no tempo de compilação graças a um novo parser baseado em AST.