Возвращаемые значения

Общая модель поведения функций

Библиотека Validator.js построена на принципе чистых функций без побочных эффектов. Это означает, что каждая функция принимает входные данные и возвращает результат проверки или преобразования, не изменяя исходное значение.

Вся система возвращаемых значений делится на две ключевые категории:

  • валидаторы (validators) — возвращают boolean
  • санитайзеры (sanitizers) — возвращают string или преобразованное значение

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


Булевы возвращаемые значения валидаторов

Большинство функций библиотеки относятся к классу проверок и возвращают строгое логическое значение:

  • true — значение соответствует условиям
  • false — значение не проходит проверку

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

  • isEmail(value) → проверка корректности email
  • isURL(value) → проверка URL
  • isInt(value) → проверка целого числа
  • isLength(value, options) → проверка длины строки
  • isAlphanumeric(value) → проверка буквенно-цифрового состава

Особенности булевых результатов

  • Возвращаемое значение всегда строгое boolean
  • Никаких строк, чисел или объектов в результате проверки не возвращается
  • При некорректных входных данных результат почти всегда false, а не ошибка

Пример логики:

isEmail("test@example.com") → true
isEmail("not-email") → false

Возвращаемые значения санитайзеров

Санитайзеры выполняют преобразование строки и возвращают изменённое значение, а не логический результат.

Основные свойства:

  • Возвращается строка
  • Исходное значение не изменяется
  • При невозможности преобразования часто возвращается исходная строка или пустое значение (в зависимости от функции)

Примеры санитайзеров

  • trim(value) → удаление пробелов по краям
  • escape(value) → экранирование HTML-символов
  • unescape(value) → обратное преобразование
  • stripLow(value) → удаление непечатаемых символов

Пример поведения

trim("  hello  ") → "hello"
escape("<b>") → "&lt;b&gt;"

Санитайзеры не возвращают boolean, так как их задача — трансформация данных, а не проверка.


Функции нормализации и их возврат

Отдельную категорию составляют функции нормализации, которые могут возвращать:

  • string — нормализованное значение
  • false — если входные данные некорректны или нормализация невозможна (в некоторых функциях)

Пример: normalizeEmail

Функция normalizeEmail(value, options) приводит email к каноническому виду:

  • приводит домен к нижнему регистру
  • удаляет лишние точки (в зависимости от провайдера)
  • может изменять локальную часть адреса

Возвращаемое значение:

  • строка — нормализованный email
  • false — если входное значение не является корректным email

Поведение при null, undefined и пустых значениях

Validator.js не использует исключения для обработки отсутствующих данных. Вместо этого применяется предсказуемая логика:

Булевы функции

Для большинства валидаторов:

  • nullfalse
  • undefinedfalse
  • "" (пустая строка) → false

Санитайзеры

  • могут возвращать пустую строку ""
  • иногда возвращают исходное значение без изменений
  • поведение зависит от конкретной функции

Отсутствие исключений и модель “fail-safe”

Одной из ключевых особенностей является отсутствие throw в стандартных сценариях.

Это означает:

  • ошибки не прерывают выполнение
  • результат всегда предсказуем
  • разработчик обязан проверять возвращаемое значение

Такой подход особенно важен для серверной валидации форм и API-запросов, где стабильность важнее подробных исключений.


Возвращаемые значения и типизация

В TypeScript-окружениях библиотека описывается следующим образом:

  • валидаторы → boolean
  • санитайзеры → string
  • отдельные функции → string | false

Это позволяет статически проверять корректность использования:

  • нельзя случайно присвоить результат isEmail() в строковую переменную
  • легко разделять ветки логики по результату проверки

Особенности интерпретации результата

Несмотря на простую модель, существуют нюансы:

Строгость результата

  • возвращаемое значение всегда строгое (true/false, строка)
  • отсутствует “truthy/falsy-магия” внутри API библиотеки

Независимость функций

Каждая функция:

  • не зависит от других проверок
  • не хранит состояние
  • не модифицирует входной объект

Поведение при неверных типах данных

Если в функцию передаётся значение неожиданного типа:

  • число → часто приводится к строке внутри проверки
  • объект → может привести к false
  • null/undefined → безопасно обрабатываются как невалидные данные

Библиотека ориентирована на устойчивость к некорректным входным данным без выброса исключений.


Различие возвращаемых значений в одной функции

Некоторые функции могут возвращать разные типы в зависимости от результата:

Пример логики:

  • успешная нормализация → string
  • ошибка или невозможность обработки → false

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


Практическая модель интерпретации результатов

Внутренняя логика работы с результатами обычно строится так:

  • true → данные корректны, можно продолжать обработку
  • false → данные отклоняются
  • string → данные преобразованы и готовы к дальнейшему использованию

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