Валидация по схеме
Условие
validate(value, schema) возвращает массив ошибок вида { path, message }. Схема: { type, required, min, max, fields, of }. Поддержи 'string', 'number', 'array', 'object'.
Что проверяют тесты
валидное значение
неверный тип
обязательное поле
необязательное отсутствующее
вложенный объект с путями
массив элементов
несколько ошибок
Как подойти
Ядро zod, yup и любой схемной валидации. Ключевое решение - возвращать список ошибок с путями, а не первую ошибку или булево: форма должна подсветить все проблемные поля разом. Путь строится по мере спуска, для массивов сегментом служит индекс. Ранний выход после несовпадения типа избавляет от каскада бессмысленных сообщений.
Подсказки: 3
- Рекурсия с накоплением пути - так ошибку можно привязать к полю формы.
- Массив - это typeof 'object', отличать надо через Array.isArray.
- После ошибки типа проверять ограничения бессмысленно - выходи сразу.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.