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)