DEV Community

Leonardo Minora
Leonardo Minora

Posted on

js / ts - comando !!

Em TypeScript (e JavaScript), o operador !! é uma maneira comum de converter um valor em um booleano. Essencialmente, o !! transforma qualquer valor em um valor booleano verdadeiro (true) ou falso (false).

Como Funciona:

  • O primeiro ! nega o valor: se o valor for "truthy" (verdadeiro), ele se tornará false. Se o valor for "falsy" (falso), ele se tornará true.
  • O segundo ! nega novamente o resultado da primeira negação. Assim, se o valor original era "truthy", o resultado final será true, e se era "falsy", o resultado final será false.

Valores Truthy e Falsy

Em JavaScript, alguns exemplos de valores "falsy" incluem:

  • false
  • 0
  • -0
  • "" (string vazia)
  • null
  • undefined
  • NaN

Qualquer outro valor é considerado "truthy", como:

  • Objetos (inclusive arrays)
  • Strings não vazias
  • Números diferentes de zero

Exemplos:

Aqui estão alguns exemplos que mostram como o !! funciona:

const a = 5;
const b = 0;
const c = null;
const d = "Hello";

// Usando !! para converter em booleano
console.log(!!a); // true (5 é truthy)
console.log(!!b); // false (0 é falsy)
console.log(!!c); // false (null é falsy)
console.log(!!d); // true (string não vazia é truthy)

// Exemplo mais complexo
const myArray = [];
console.log(!!myArray); // true (array vazio é truthy)
Enter fullscreen mode Exit fullscreen mode

Uso Típico

O !! é frequentemente usado em códigos onde você deseja garantir que um valor seja tratado como um booleano, especialmente em condições. Por exemplo:

if (!!user) {
    console.log("User exists");
} else {
    console.log("User does not exist");
}
Enter fullscreen mode Exit fullscreen mode

Neste caso, o uso de !! assegura que user é tratado como um booleano ao avaliar a condição do if.

Conclusão

Portanto, o !! é uma forma conveniente e concisa de forçar um valor a ser interpretado como um booleano em TypeScript e JavaScript. É uma prática comum para garantir que uma condição seja avaliada corretamente.

by ChatGPT

Top comments (0)