O TypeScript 4.9 é enorme!
Introdução
Se não souber, TypeScript é uma linguagem que se baseia em JavaScript para programação segura de tipo (tipada). O TypeScript tornou-se muito famoso na indústria, e a Microsoft acaba de anunciar o TypeScript 4.9 na semana passada.
O que há de novo ?
O operador satisfies
O objectivo de satisfies operator é impor uma condição sobre uma variável, sem alterar o seu tipo.
Por exemplo, quer dizer que uma cor é um fio, ou uma cor RGB, que se pareceria com isto:
type RGB = [red: number, green: number, blue: number];
type Color = RGB | string;
const myColor: Color = 'blue';
Não sabemos se o myColor é uma string ou uma cor RGB. Portanto, não podemos fazer algo como myColor.toLowerCase() mesmo que seja uma string.
Mas agora, com o TS 4.9, o operador satisfeito torna isto possível:
type RGB = [red: number, green: number, blue: number];
type Color = RGB | string;
const myColor = 'blue' satisfies Color; // works
const myIncorrectColor = 420 satisfies Color; // error
myColor.toUpperCase(); // valid because myColor is a string
Auto-Accessors em Classes
O TS 4.9 suporta uma próxima funcionalidade do ECMAScript chamada auto-accessors. Os Auto-Accessors são declarados tal como as propriedades das classes, excepto que são declarados com a palavra-chave accessor.
class Person {
accessor name: string;
constructor(name: string) {
this.name = name;
}
}
Como é que se parece debaixo dos panos:
class Person {
#__name: string;
get name() {
return this.#__name;
}
set name(value: string) {
this.#__name = name;
}
constructor(name: string) {
this.name = name;
}
}
Verificações para Igualdade em NAN
NaN é um valor numérico especial que significa "Not a Number" (Não é um número). Nada é sempre igual a NaN.
TypeScript gere erros de digitação em comparações directas contra NaN, e irá sugerir a utilização de alguma variação de Number.isNaN em vez disso.
Comandos "Remove Unused Imports" e "Sort Imports"
No passado, o TypeScript suportava apenas dois comandos de editor para gerir as importações: "Organizar Importações" e "Ordenar Importações" no TS 4.3
TypeScript 4.9 acrescenta mais, e agora fornece "Remove Unused Imports". O TypeScript irá agora remover nomes e declarações de importação não utilizadas.
Estreitamento de propriedades não listadas com o in Operador
Como Developers, precisamos muitas vezes de lidar com valores que não são totalmente conhecidos em tempo de execução. De facto, muitas vezes não sabemos se existem propriedades, se estamos a receber uma resposta de um servidor ou a ler um ficheiro de configuração. JavaScript's in operador podem verificar se existe uma propriedade num objecto.
O TypeScript 4.9 torna o in operador um pouco mais poderoso ao estreitar os tipos que não listam de todo a propriedade. Em vez de os deixar tal como estão, a linguagem irá intersectar os seus tipos com Record<"property-key-being-checked", unknown>.
Conclusão
Este artigo é apenas um resumo das notas de correcção do TypeScript 4.9. Espero que consiga actualizar as informações mais recentes da sua stack.
Referencia: https://devblogs.microsoft.com/typescript/announcing-typescript-4-9/