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
vou seguir essa dica de `!!`