Skip to content

preprocess ​

Подготавливает входное значение до проверки. Удобно, когда данные приходят в неудобном формате.

Сигнатура ​

ts
function preprocess<T>(fn: (value: unknown) => unknown, schema: Schema<T>): Schema<T>

Параметры ​

ПараметрТипОписание
fn(value: unknown) => unknownФункция подготовки. Получает исходное значение — любого типа
schemaSchema<T>Схема, которая проверит результат fn

Особенности ​

  • fn получает непроверенные данные: учитывайте, что там может быть что угодно.
  • На preprocess построены все функции coerce.

Примеры ​

Дробное число с запятой ​

ts
const amount = preprocess(
  (v) => (typeof v === 'string' ? Number(v.replace(',', '.')) : v),
  number(),
);

validate(amount, '1,5').data; // 1.5

JSON в строке ​

ts
const settings = preprocess(
  (v) => (typeof v === 'string' ? JSON.parse(v) : v),
  object({ theme: oneOf(['light', 'dark']) }),
);

См. также ​

  • coerce — готовые приведения типов
  • transform — преобразовать результат после проверки