preprocess
Подготавливает входное значение до проверки. Удобно, когда данные приходят в неудобном формате.
Сигнатура
ts
function preprocess<T>(fn: (value: unknown) => unknown, schema: Schema<T>): Schema<T>Параметры
| Параметр | Тип | Описание |
|---|---|---|
fn | (value: unknown) => unknown | Функция подготовки. Получает исходное значение — любого типа |
schema | Schema<T> | Схема, которая проверит результат fn |
Особенности
fnполучает непроверенные данные: учитывайте, что там может быть что угодно.- На
preprocessпостроены все функцииcoerce.
Примеры
Дробное число с запятой
ts
const amount = preprocess(
(v) => (typeof v === 'string' ? Number(v.replace(',', '.')) : v),
number(),
);
validate(amount, '1,5').data; // 1.5JSON в строке
ts
const settings = preprocess(
(v) => (typeof v === 'string' ? JSON.parse(v) : v),
object({ theme: oneOf(['light', 'dark']) }),
);