Nullish Coalescing
O operador de coalescencia nula é uma alternativa ao ||
que retorna o lado direito da expressão se o lado esquerdo
é nulo ou undefined (indefinido)
Em contraste, || usa a checagem falsy, significando que um texto vazio
ou o número 0 seriam considerados falso.
Um bom exemplo para essa funcionalidade é lidar com
objetos que tem padrões quando uma chave não é passada.
interface ConfiguracaoDoApp {
// Padrão: "(sem nome)"; texto vazio é válido
nome: string;
// Padrão: -1; 0 é válido
itens: number;
// Padrão: verdadeiro
ativo: boolean;
}
function updateApp(configuracao: Partial) {
// Com o operador null-coalescing
configuracao.nome = configuracao.nome ?? "(sem nome)";
configuracao.itens = configuracao.itens ?? -1;
configuracao.ativo = configuracao.ativo ?? true;
// Solução atual
configuracao.nome = typeof configuracao.nome === "string" ? configuracao.nome : "(sem nome)";
configuracao.itens = typeof configuracao.itens === "number" ? configuracao.itens : -1;
configuracao.ativo = typeof configuracao.ativo === "boolean" ? configuracao.ativo : true;
// Usando o operador || que poderia oferecer dados ruins
configuracao.nome = configuracao.nome || "(sem nome)"; // não permite a entrada de ""
configuracao.itens = configuracao.itens || -1; // não permite a entrada de 0
configuracao.ativo = configuracao.ativo || true; // realmente ruim, sempre true (verdadeiro)
}
// Você pode ler mais sobre o operador nullish coalescing no post do blog do 3.7
https://devblogs.microsoft.com/typescript/announcing-typescript-3-7/