TypeScript - Boolean: руковод ru(Русский) языкомbeginner's Guide to Truth and Falsehood in Programming

Здравствуйте, будущий супер-программист! Готовы окунуться в fascинирующий мир булевых значений в TypeScript? Не волнуйтесь, если вы никогда не писали ни строчки кода - мы начнем с самого начала и пройдем этот путь вместе. К концу этого руководства вы станете мастером булевых значений, способным использовать true и false как программист-волшебник!

TypeScript - Boolean

Что такое булево значение?

Прежде чем углубиться в детали, давайте поговорим о том, что такое булево значение на самом деле. В программировании булево значение - это тип данных, который может принимать только два значения: true или false. Это как выключатель света - он либо включен, либо выключен, без中介ного состояния.

Представьте, что вы спрашиваете друга, хочет ли он пойти в кино. Его ответ может быть только "Да" (true) или "Нет" (false). Именно так работают булевы значения в программировании!

Синтаксис: как писать булевы значения в TypeScript

В TypeScript писать булево значение так просто, как написать true или false. Вот пример:

let isHappy: boolean = true;
let isSad: boolean = false;

В этом коде мы создали две переменные: isHappy и isSad. Переменная isHappy установлена в true, а isSad - в false.

Анонсы типов: сообще TypeScript, что ожидать

Вы, возможно, заметили часть : boolean в нашем предыдущем примере. Это называется анонс типа. Это как putting a label on a box, чтобы сказать всем, что внутри. Когда мы пишем : boolean, мы говорим TypeScript: "Эй, эта переменная будет булевой!"

Вот еще один пример:

let isRaining: boolean;
isRaining = true;
// isRaining = "Yes"; // Это вызвало бы ошибку!

В этом случае мы объявили isRaining как булево значение, но еще не присвоили ему значения. Позже мы присваиваем ему true, что совершенно нормально. Однако, если бы мы попытались присвоить ему строку, такую как "Yes", TypeScript бы выдал ошибку, так как "Yes" не является булевым значением.

Truthy и falsy значения: когда не-булевы значения ведут себя как булевы

Теперь, где事情 становятся интересными! В TypeScript (и JavaScript) некоторые не-булевы значения могут treated как если бы они были булевыми. Мы называем их "truthy и falsy значениями.

  • Falsy значения включают: false, 0, '' (пустая строка), null, undefined и NaN.
  • Все остальное считается truthy.

Давайте посмотрим это в действии:

if (1) {
console.log("1 is truthy!");
}

if ("") {
console.log("This won't be printed because an empty string is falsy.");
}

В этом примере первый оператор if будет выполнен, так как 1 является truthy, но второй не будет, так как пустая строка является falsy.

Преобразование не-булевого значения в булево

Иногда вам может понадобиться преобразовать не-булево значение в булево. Есть несколько способов сделать это:

  1. Используя функцию Boolean():
let num = 5;
let boolValue = Boolean(num);
console.log(boolValue); // Выводит: true
  1. Используя оператор двойного отрицания (!!):
let str = "Hello";
let boolValue = !!str;
console.log(boolValue); // Выводит: true

Оба этих метода преобразуют truthy значения в true и falsy значения в false.

Булевы операции:_combining Booleans

Теперь, когда мы знаем, как создавать булевы значения, давайте узнаем, как с ними работать. Есть три основные булевы операции:

  1. AND (&&): Возвращает true, если оба операнда true.
  2. OR (||): Возвращает true, если хотя бы один операнд true.
  3. NOT (!): Переворачивает булево значение.

Давайте посмотрим это в действии:

let isAdult = true;
let hasLicense = false;

console.log(isAdult && hasLicense); // false
console.log(isAdult || hasLicense); // true
console.log(!isAdult); // false

В этом примере isAdult && hasLicense будет false, так как хотя isAdult и true, hasLicense является false. isAdult || hasLicense будет true, так как хотя бы один из них (isAdult) является true. !isAdult будет false, так как это相反 true.

Условные выражения с булевыми значениями

Булевы значения часто используются в условных операторах для принятия решений в нашем коде. Вот пример:

let age: number = 20;
let canVote: boolean = age >= 18;

if (canVote) {
console.log("You can vote!");
} else {
console.log("Sorry, you're too young to vote.");
}

В этом коде мы проверяем, превышает ли age 18. Если да, то canVote будет true, и человек может голосовать. Если нет, то canVote будет false, и он не может голосовать.

Разница между TypeScript Boolean и boolean

Иногда вы можете видеть Boolean (с заглавной буквы B) в коде TypeScript. Это относится к объекту Boolean, который отличается от примитивного типа boolean, который мы использовали.

let primitiveBoolean: boolean = true;
let objectBoolean: Boolean = new Boolean(true);

В общем, рекомендуется использовать примитивный тип boolean,除非 у вас есть конкретная причина использовать объект Boolean.

Свойства и методы булевых объектов

Хотя примитивный тип boolean не имеет свойств или методов, объект Boolean имеет их. Вот несколько из них:

Свойство/Метод Описание
Boolean.prototype.toString() Возвращает "true" или "false"
Boolean.prototype.valueOf() Возвращает примитивное значение булева объекта

Вот как вы можете использовать их:

let boolObj = new Boolean(true);
console.log(boolObj.toString()); // Выводит: "true"
console.log(boolObj.valueOf()); // Выводит: true

И вот и все! Вы только что прошли экскурсию по булевым значениям в TypeScript. Помните, булевы значения могут показаться простыми, но они являются строительными блоками логики в программировании. Каждый раз, когда вы используете оператор if или цикл, вы работаете с булевыми значениями за кулисами.

Пока вы продолжаете свое путешествие в программирование, вы найдете булевы значения везде. Они как тайные агенты мира программирования - малы, discretely, но incredibly powerful. Так что в следующий раз, когда кто-то спросит вас "true или false?", вы можете улыбнуться, зная, что понимаете глубокие, existentielle implikationen этого вопроса в мире программирования.

Продолжайте практиковаться, оставайтесь любопытными и помните: в мире булевых значений нет "может быть" - только true или false. Счастливого кодирования!

Credits: Image by storyset