Валидация булевых значений в JavaScript представляет собой не столько
проверку типа, сколько нормализацию входных строк к логическому
представлению. Библиотека Validator.js реализует этот механизм через
набор функций, обеспечивающих как проверку корректности булевого
значения, так и его преобразование в тип boolean.
В контексте веб-приложений входные данные почти всегда приходят в
виде строк, даже если логически они представляют собой булевы флаги. Это
делает задачу приведения особенно важной: "true",
"false", "1", "0",
"yes", "no" — все эти значения должны быть
приведены к единому стандарту.
isBooleanФункция isBoolean используется для проверки,
соответствует ли строка одному из допустимых булевых представлений.
Сигнатура:
isBoolean(str [, options])
Функция анализирует строку и определяет, может ли она быть интерпретирована как булево значение. По умолчанию учитываются распространённые представления:
true, false1, 0yes, noon, offПример использования:
const validator = require('validator');
validator.isBoolean('true'); // true
validator.isBoolean('false'); // true
validator.isBoolean('yes'); // true
validator.isBoolean('0'); // true
validator.isBoolean('hello'); // false
В зависимости от версии и конфигурации, функция может поддерживать режим строгой проверки, при котором допустимы только строго определённые значения:
"true""false"Пример строгого режима:
validator.isBoolean('yes', { strict: true }); // false
validator.isBoolean('true', { strict: true }); // true
toBooleanФункция toBoolean выполняет преобразование строкового
значения в тип boolean.
Сигнатура:
toBoolean(str [, strict])
Функция сопоставляет входное значение с заранее определённым набором
строк и возвращает true или false.
В этом режиме учитывается расширенный набор значений:
| Строка | Результат |
|---|---|
"true" |
true |
"1" |
true |
"yes" |
true |
"on" |
true |
"false" |
false |
"0" |
false |
"no" |
false |
"off" |
false |
Пример:
const validator = require('validator');
validator.toBoolean('YES'); // true
validator.toBoolean('0'); // false
validator.toBoolean('off'); // false
В строгом режиме преобразование ограничивается минимальным набором значений:
"true" → true"false" → falseЛюбые отклонения приводят к false.
validator.toBoolean('true', true); // true
validator.toBoolean('1', true); // false
validator.toBoolean('yes', true); // false
Перед преобразованием строка проходит нормализацию:
Это позволяет обрабатывать «грязные» входные данные:
validator.toBoolean(' TRUE '); // true
validator.toBoolean(' Yes '); // true
isBoolean и toBoolean решают разные
задачи:
isBoolean — определяет, допустимо ли значение как
булевоtoBoolean — выполняет преобразованиеПример совместного использования:
const value = 'yes';
if (validator.isBoolean(value)) {
const boolValue = validator.toBoolean(value);
}
Однако в большинстве случаев проверка отдельно не требуется, так как
toBoolean уже выполняет интерпретацию.
При передаче значения, не соответствующего ни одному известному булевому представлению:
validator.toBoolean('abc'); // false
Такое поведение делает функцию предсказуемой, но требует
осторожности: любое неизвестное значение интерпретируется как
false, что может приводить к логическим ошибкам в
бизнес-логике.
В веб-приложениях булевы параметры часто приходят как строки:
// GET /api?active=true
const active = validator.toBoolean(req.query.active);
Без преобразования значение req.query.active остаётся
строкой "true", что в JavaScript является truthy-значением,
но не равнозначно boolean.
Типичная ошибка без преобразования:
if (req.query.active) {
// выполнится даже если active = "false"
}
После приведения:
if (validator.toBoolean(req.query.active)) {
// корректное булево поведение
}
Внутренний механизм преобразования основан на словаре соответствий. Это означает:
Это ключевое отличие от стандартного приведения:
Boolean("false"); // true (встроенное поведение JS)
validator.toBoolean("false"); // false
Стандартный Boolean() рассматривает любую непустую
строку как true, что делает его непригодным для обработки
пользовательского ввода.
Использование нестрогого режима в системах, где допустимы только
бинарные значения "true"/"false", может
приводить к неоднозначности.
Любая строка, не входящая в список допустимых, преобразуется в
false, что может скрывать ошибки входных данных.
Типовой сценарий обработки конфигурационных флагов:
const validator = require('validator');
function parseFeatureFlag(value) {
return validator.toBoolean(value, true);
}
const isEnabled = parseFeatureFlag(process.env.FEATURE_ENABLED);
В этом случае строгий режим обеспечивает детерминированное поведение системы.
Приведение к булевым значениям часто используется как финальный этап обработки входных данных после:
Это позволяет гарантировать, что на уровне бизнес-логики данные уже находятся в типизированном виде и не требуют дополнительной интерпретации.