transform
Преобразует результат схемы и может изменить его тип. Функция вызывается, только если проверка прошла.
Сигнатура
ts
function transform<T, U>(schema: Schema<T>, fn: (value: T) => U): Schema<U>Параметры
| Параметр | Тип | Описание |
|---|---|---|
schema | Schema<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