oneOf
Одно из перечисленных значений — аналог enum или правила in: в Laravel.
Сигнатура
ts
function oneOf<const T extends readonly (string | number | boolean)[]>(values: T, msg?: Message): Schema<T[number]>Параметры
| Параметр | Тип | Описание |
|---|---|---|
values | `readonly (string | number |
msg | Message | Своё сообщение. Заменяет сообщения по умолчанию для всех ошибок этой схемы |
Коды ошибок
| Код | Когда | Сообщение по умолчанию |
|---|---|---|
required | Значение пустое | Required |
oneOf | Значения нет в списке | Must be one of: {options} |
Тексты можно поменять: см. Сообщения и локализация.
Особенности
- Тип результата — объединение значений:
oneOf(['admin', 'user'])→'admin' | 'user'. - В сообщении параметр
{options}— значения через запятую. - Сравнение строгое:
oneOf([1, 2])не пропустит строку'1'. Для query используйтеpreprocess(Number, oneOf([1, 2])).
Примеры
Роль пользователя
ts
const ROLES = ['admin', 'editor', 'user'] as const;
const User = object({
role: optional(oneOf(ROLES), 'user'),
});
validate(User, { role: 'root' }).errors; // { role: 'Must be one of: admin, editor, user' }См. также
- literal — одно конкретное значение
- preprocess