Skip to main content

Boolean

TypeScript

const someBool: boolean = true;

true;
false;

// строки
Boolean('abc'); // true
Boolean(' '); // true - пробел
Boolean(''); // false - пустая строка

// числа
Boolean(1); // true
Boolean(123); // true
Boolean(-10); // true
Boolean(0); // false - ноль

// спец. типы
Boolean(Infinity); // true
Boolean(null); // false
Boolean(undefined); // false
Boolean(NaN); // false

// объекты и массивы
Boolean({}); // true
Boolean([]); // true

// функции
Boolean(() => null); // true


Булевы операторы

Логическое И

Если левая часть true, то дальше проверяется еще правая часть.

true && true; // true (которое правее)
true && false; // false (которое правее)
false && true; // false (которое левее)

'1' && '2' && '3' // 3
'123' && 123; // 123

Логическое ИЛИ

Если левая часть true, то дальше не проверяется, а сразу возвращается true.

true || true; // true (которое левее)
true || false; // true (которое левее)
false || true; // true (которое правее)

'1' || '2' || '3'; // 1
'123' || 123; // '123'

Оператор ??

  • Работает также как и оператор ||, но только в случае с null и undefined, во всех остальных случаях возвращает левую часть.
  • Если слева null или undefined, то берем правое значение, в остальных случаях левое.
null ?? 123; // 123
undefined ?? 123; // 123
0 ?? 123; // 0
false ?? 123; // false
'' ?? 123; // ''
null || 123; // 123
undefined || 123; // 123
0 || 123; // 123
false || 123; // 123
'' || 123; // 123

Логическое присваивание

&&=

let a = 0;
let b = 2;

// 1 вариант
if (a) {
a = b;
}

// 2 вариант
a && a = b;

// 3 вариант
// Будет присвоение только, если a === true (a И b)
// Если a === true, то присвоиться b, если не true, то a останется как есть
a &&= b;

||=

let a = 1;
let b = 2;

a || a = b;

// Будет присвоение в любом случае (a ИЛИ b)
// Если a === true, то останется a, если не true, то присвоиться b
a ||= b; // 1

??=

let a = null;
let b = 2;

// Будет присвоение в любом случае (a ИЛИ b)
// Если a === null || undefined, то присвоиться b, иначе останется a
a ?? a = b;

Оператор ! - переворачивание логики.

!true; // false
!1; // false
!123; // false
!'123'; // false

!''; // true
!0; // true
!false; // true
!null; // true
!undefined; // true

Операторы сравнения

1 > 0; // true
1 >= 0; // true
1 < 0; // false
1 <= 0; // false

Нестрогое сравнение

Тип данных не учитывается.

1 == '1'; // true
1 != '1'; // false

Строгое сравнение (best practice)

Тип данных учитывается.

1 === '1'; // false
1 !== '1'; // true

Двойное отрицание.

Обычно используется для конвертации любого типа в булевый тип, но лучше использовать Boolean

!!'true'; // true
!!''; // false

!!123; // true

!![].length;