Skip to content

transform ​

Преобразует результат схемы и может изменить его тип. Функция вызывается, только если проверка прошла.

Сигнатура ​

ts
function transform<T, U>(schema: Schema<T>, fn: (value: T) => U): Schema<U>

Параметры ​

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

Отличие от преобразований в pipe ​

trim, toLowerCase и другие действия в pipe не меняют тип. transform — меняет: строка может стать массивом, числом, объектом.

Исключение внутри fn не превращается в ошибку валидации, а пробрасывается дальше. Сначала проверьте значение правилами, потом преобразуйте.

Примеры ​

Строка через запятую в массив ​

ts
const ids = transform(pipe(string(), pattern(/^\d+(,\d+)*$/)), (s) => s.split(',').map(Number));

validate(ids, '1,2,3').data; // [1, 2, 3]

Рубли в копейки ​

ts
const price = transform(pipe(coerce.number(), min(0)), (rub) => Math.round(rub * 100));

См. также ​

  • preprocess — подготовить значение до проверки
  • pipe