Eu sempre tive uma grande duvida sobre os Shor-circuit evaluation
.
Sempre quando eu queria retornar um booleano e utilizava o codigo abaixo ele me retornava o valor
const user = "medeiroz"
const email = "my-email@gmail.com"
const userOrEmailHasBeenFilled = user || email;
Isso retornava uma string e eu sempre fui obrigado a adicionar um cast para isso.
const userOrEmailHasBeenFilled = Boolean(user || email);
Existe alguma maneira para facilitar esse cast ou até mesmo para que o operador OR ||
retorne um booleano?
Você pode usar a operação de negação duas vezes: !!
. No seu exemplo, ficaria:
const userOrEmailHasBeenFilled = !!(user || email);
Esse tipo de conversão atua como nas especificações do toBoolean
do EcmaScript. Por exemplo:
1 // number, 1
!1 // boolean, false
!!1 // boolean, true