📘 TypeScript

عوامل المقارنة والعوامل المنطقية في TypeScript

Что это и зачем?

Представь, что ты играешь в компьютерную игру. У тебя есть 100 очков здоровья. Чтобы пройти уровень, тебе нужно:

  • Проверить, хватит ли у тебя здоровья (больше 0?)
  • Сравнить, есть ли у тебя ключ от двери (есть или нет?)
  • Убедиться, что ты собрал все монеты (количество монет равно 5?)

В программировании такие проверки делаются с помощью операторов сравнения (они сравнивают числа или строки) и логических операторов (они соединяют несколько условий).

Зачем это нужно? Без них программа не сможет принимать решения. Например, игра не узнает, что ты умер, если здоровье стало 0. Или сайт не поймёт, что пароль слишком короткий. Операторы сравнения и логические операторы — это как "мозг" программы, который позволяет ей думать и реагировать.

Синтаксис и примеры кода

В TypeScript (и JavaScript) операторы сравнения выглядят так:

// Операторы сравнения
let a = 10;
let b = 5;

console.log(a > b);  // true (10 больше 5)
console.log(a < b);  // false (10 не меньше 5)
console.log(a >= b); // true (10 больше или равно 5)
console.log(a <= b); // false (10 не меньше или равно 5)
console.log(a === b); // false (10 не равно 5)
console.log(a !== b); // true (10 не равно 5 — верно!)

Важно! В TypeScript для сравнения используют === (три знака равно), а не ==. Почему? Потому что === проверяет и значение, и тип данных. Например:

console.log(5 === "5"); // false (число не равно строке)
console.log(5 == "5");  // true (но это ошибка! TypeScript такое не пропустит)

Логические операторы соединяют условия:

// Логические операторы
let age = 15;
let hasPermission = true;

// && — И (оба условия должны быть true)
if (age >= 18 && hasPermission) {
    console.log("Можно войти");
} else {
    console.log("Вход запрещён");
}
// Выведет: "Вход запрещён" (потому что age < 18)

// || — ИЛИ (хотя бы одно условие true)
let isWeekend = true;
let isHoliday = false;

if (isWeekend || isHoliday) {
    console.log("Можно отдыхать!");
}
// Выведет: "Можно отдыхать!" (потому что isWeekend = true)

// ! — НЕ (меняет true на false и наоборот)
let isRaining = false;
if (!isRaining) {
    console.log("Можно идти гулять");
}
// Выведет: "Можно идти гулять" (потому что !false = true)

Ещё пример — проверка возраста для покупки билета:

let age = 12;
let ticketPrice = 0;

if (age < 7) {
    ticketPrice = 0; // Бесплатно
} else if (age >= 7 && age <= 18) {
    ticketPrice = 200; // Детский билет
} else {
    ticketPrice = 500; // Взрослый билет
}

console.log(`Цена билета: ${ticketPrice} рублей`);
// Выведет: "Цена билета: 200 рублей"

И последний пример — проверка пароля:

let password = "qwerty123";
let minLength = 8;
let hasNumber = true; // Допустим, мы проверили, что есть цифра

if (password.length >= minLength && hasNumber) {
    console.log("Пароль надёжный");
} else {
    console.log("Пароль слишком слабый");
}
// Выведет: "Пароль надёжный"

Сравнение с Python

Если ты уже знаешь Python (или будешь учить), вот как те же операторы выглядят там:

Операция TypeScript Python
Равно === ==
Не равно !== !=
Больше > >
Меньше < <
И && and
ИЛИ || or
НЕ ! not

Пример на Python:

age = 15
has_permission = True

if age >= 18 and has_permission:
    print("Можно войти")
else:
    print("Вход запрещён")
# Выведет: "Вход запрещён"

Главное отличие: в Python используют слова and, or, not, а в TypeScript — символы &&, ||, !. Ещё в Python для сравнения используют == (два знака), а в TypeScript — === (три).

Типичные ошибки новичков

  1. Путают = и ===

    Один знак = — это присваивание (положить значение в переменную). Три знака === — это сравнение (проверить, равны ли значения).

    // Ошибка:
    if (age = 18) { // Так нельзя! Это присвоит age значение 18
        console.log("Тебе 18");
    }
    
    // Правильно:
    if (age === 18) {
        console.log("Тебе 18");
    }
  2. Забывают про приоритет операций

    Логические операторы выполняются в определённом порядке: сначала !, потом &&, потом ||. Если сомневаешься — используй скобки!

    // Без скобок может быть неочевидно:
    if (age > 18 || age === 18 && hasPermission) {
        // Сначала выполнится &&, потом ||
    }
    
    // Лучше со скобками:
    if ((age > 18 || age === 18) && hasPermission) {
        // Теперь понятно: сначала ИЛИ, потом И
    }
  3. Сравнивают строки с числами

    TypeScript строгий — он не любит, когда сравнивают разные типы. Всегда проверяй, что сравниваешь числа с числами, а строки со строками.

    let number = 10;
    let text = "10";
    
    console.log(number === text); // false — потому что разные типы!
    console.log(number === Number(text)); // true — преобразовали строку в число
  4. Путают && и ||

    Запомни: && — это "И" (оба условия должны быть true), || — это "ИЛИ" (достаточно одного true).

    // Хотим проверить, что возраст от 18 до 30:
    if (age >= 18 && age <= 30) { // Правильно: И
        console.log("Подходит");
    }
    
    // Хотим проверить, что сегодня выходной или праздник:
    if (isWeekend || isHoliday) { // Правильно: ИЛИ
        console.log("Отдыхаем");
    }
  5. Забывают про отрицание

    Оператор ! меняет true на false и наоборот. Часто новички пишут лишние проверки.

    // Плохо:
    if (isRaining === false) {
        console.log("Можно гулять");
    }
    
    // Хорошо:
    if (!isRaining) {
        console.log("Можно гулять");
    }

Итог

Операторы сравнения и логические операторы — это основа любого программирования. Они позволяют программе "думать" и принимать решения. Запомни главное:

  • Сравнение: >, <, >=, <=, ===, !==
  • Логика: && (И), || (ИЛИ), ! (НЕ)
  • Всегда используй ===, а не ==
  • Ставь скобки, если сомневаешься в порядке выполнения
  • Проверяй типы данных — не сравнивай строки с числами

Попробуй написать свою программу с условиями. Например, калькулятор оценок: если балл больше 90 — "Отлично", если от 70 до 90 — "Хорошо", иначе — "Нужно подтянуть". Удачи!