Получить число лет с правильным склонением с текущего момента на TypeScript в React Native

export const getAgeString = (age: number): string => {
    if (age < 0) return "Возраст не может быть отрицательным";
    const lastDigit = age % 10;
    const isTeen = Math.floor(age / 10) % 10 === 1;
    if (isTeen) {
      return `${age} лет`;
    }

    switch (lastDigit) {
      case 1:
        return `${age} год`;
      case 2:
      case 3:
      case 4:
        return `${age} года`;
      default:
        return `${age} лет`;
    }
  };

Функция getAgeString принимает возраст в виде числа и возвращает строку с корректным грамматическим оформлением возраста на русском языке.

Как она работает?

  1. Проверка отрицательного возраста: Если передан отрицательный возраст, функция возвращает сообщение “Возраст не может быть отрицательным”.
  2. Определение последней цифры: Вычисляется последняя цифра возраста с помощью операции остатка от деления на 10.
  3. Проверка на подростковый возраст: Если десяток возраста равен 1 (например, 11, 12, 13), считается, что это подростковый возраст, и возвращается строка с окончанием “лет”.
  4. Выбор правильного окончания:
    • Если последняя цифра 1 (но не 11), возвращается строка с окончанием “год”.
    • Если последняя цифра 2, 3 или 4 (но не 12, 13, 14), возвращается строка с окончанием “года”.
    • Во всех остальных случаях возвращается строка с окончанием “лет”.

Пример использования

console.log(getAgeString(21)); // "21 год"
console.log(getAgeString(22)); // "22 года"
console.log(getAgeString(25)); // "25 лет"
console.log(getAgeString(11)); // "11 лет"

Эта функция удобна для отображения возраста в пользовательских интерфейсах приложений на React Native, обеспечивая корректное склонение.