← Назад к вопросам

Как проверить является ли число четным в TypeScript?

1.0 Junior🔥 91 комментариев
#JavaScript Core#TypeScript

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Как проверить является ли число четным в TypeScript?

Для проверки, является ли число четным в TypeScript, используется оператор остатка от деления (%) - самый простой и универсальный способ. Четное число всегда делится на 2 без остатка.

Базовый способ

function isEven(num: number): boolean {
  return num % 2 === 0;
}

console.log(isEven(4));    // true
console.log(isEven(7));    // false
console.log(isEven(0));    // true (0 четное)
console.log(isEven(-2));   // true (-2 четное)

Стрелочная функция

const isEven = (num: number): boolean => num % 2 === 0;

console.log(isEven(10));   // true
console.log(isEven(11));   // false

Краткая версия

const isEven = (num: number) => num % 2 === 0;

// Или используя тип return
const isEven: (n: number) => boolean = (n) => n % 2 === 0;

Проверка нечетного числа

function isOdd(num: number): boolean {
  return num % 2 !== 0; // или num % 2 === 1
}

console.log(isOdd(5));    // true
console.log(isOdd(8));    // false
console.log(isOdd(-3));   // true

Работа с массивами

const numbers: number[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

// Фильтр четных чисел
const evenNumbers = numbers.filter(num => num % 2 === 0);
console.log(evenNumbers); // [2, 4, 6, 8, 10]

// Фильтр нечетных чисел
const oddNumbers = numbers.filter(num => num % 2 !== 0);
console.log(oddNumbers); // [1, 3, 5, 7, 9]

// Проверка, все ли четные
const allEven = numbers.every(num => num % 2 === 0);
console.log(allEven); // false

// Проверка, есть ли четные
const someEven = numbers.some(num => num % 2 === 0);
console.log(someEven); // true

Альтернативные способы

Способ 1: Использование побитового оператора AND

function isEven(num: number): boolean {
  return (num & 1) === 0;
}

console.log(isEven(4));  // true
console.log(isEven(7));  // false

Этот способ работает, потому что последний бит четного числа всегда 0 в двоичном представлении:

  • 4 в двоичном: 0100 (& 0001 = 0)
  • 7 в двоичном: 0111 (& 0001 = 1)

Способ 2: Использование toString с радиксом

function isEven(num: number): boolean {
  return parseInt(num.toString(2), 10) % 2 === 0;
}

// Менее эффективно, но работает
console.log(isEven(4));  // true

Работа с BigInt

function isEvenBigInt(num: bigint): boolean {
  return num % 2n === 0n;
}

console.log(isEvenBigInt(4n));           // true
console.log(isEvenBigInt(9999999999n));  // false

Класс с методом для проверки

class MathHelper {
  static isEven(num: number): boolean {
    return num % 2 === 0;
  }

  static isOdd(num: number): boolean {
    return num % 2 !== 0;
  }

  static getEvenNumbers(numbers: number[]): number[] {
    return numbers.filter(this.isEven);
  }

  static getOddNumbers(numbers: number[]): number[] {
    return numbers.filter(this.isOdd);
  }
}

console.log(MathHelper.isEven(6));      // true
console.log(MathHelper.getEvenNumbers([1, 2, 3, 4, 5]));
// [2, 4]

Использование в React компоненте

import { useState } from 'react';

function NumberChecker() {
  const [number, setNumber] = useState<number>(0);

  const isEven = (num: number): boolean => num % 2 === 0;
  const checkResult = isEven(number);

  const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {
    setNumber(parseInt(e.target.value, 10));
  };

  return (
    <div>
      <input
        type="number"
        value={number}
        onChange={handleInputChange}
        placeholder="Введите число"
      />
      <p>
        {number} - это {checkResult ? 'четное' : 'нечетное'} число
      </p>
      <p className={checkResult ? 'text-green-600' : 'text-red-600'}>
        {checkResult ? 'Четное число' : 'Нечетное число'}
      </p>
    </div>
  );
}

Проверка с обработкой ошибок

function validateAndCheckEven(value: unknown): boolean {
  if (typeof value !== 'number') {
    throw new TypeError('Ожидается число');
  }

  if (!Number.isInteger(value)) {
    throw new Error('Ожидается целое число');
  }

  return value % 2 === 0;
}

try {
  console.log(validateAndCheckEven(4));  // true
  console.log(validateAndCheckEven(3.5)); // Error: Ожидается целое число
  console.log(validateAndCheckEven('4')); // Error: Ожидается число
} catch (error) {
  console.error(error);
}

Перечисление четных и нечетных в диапазоне

function getEvenNumbersInRange(
  start: number,
  end: number
): number[] {
  const result: number[] = [];
  for (let i = start; i <= end; i++) {
    if (i % 2 === 0) {
      result.push(i);
    }
  }
  return result;
}

function getOddNumbersInRange(
  start: number,
  end: number
): number[] {
  const result: number[] = [];
  for (let i = start; i <= end; i++) {
    if (i % 2 !== 0) {
      result.push(i);
    }
  }
  return result;
}

console.log(getEvenNumbersInRange(1, 10));
// [2, 4, 6, 8, 10]

console.log(getOddNumbersInRange(1, 10));
// [1, 3, 5, 7, 9]

Сравнение производительности

// Способ 1: модуль (самый быстрый и читаемый)
const isEven1 = (n: number) => n % 2 === 0;

// Способ 2: побитовый оператор (немного быстрее, менее читаемо)
const isEven2 = (n: number) => (n & 1) === 0;

// Способ 3: Math.abs + модуль (для отрицательных)
const isEven3 = (n: number) => Math.abs(n) % 2 === 0;

// В реальных приложениях разница незначительна
// Выбирай основываясь на читаемости

Заключение

Для проверки четности в TypeScript:

Основной метод:

num % 2 === 0  // четное
num % 2 !== 0  // нечетное

Почему это лучший способ:

  • Простой и понятный
  • Быстрый и эффективный
  • Работает с целыми и отрицательными числами
  • Стандартный способ во всех языках программирования
  • Легко читается и поддерживается

Для специальных случаев (производительность) можно использовать побитовый оператор (num & 1) === 0, но в большинстве случаев модуль полностью достаточен.

Как проверить является ли число четным в TypeScript? | PrepBro