Skip to content

oneOf ​

Одно из перечисленных значений — аналог enum или правила in: в Laravel.

Сигнатура ​

ts
function oneOf<const T extends readonly (string | number | boolean)[]>(values: T, msg?: Message): Schema<T[number]>

Параметры ​

ПараметрТипОписание
values`readonly (stringnumber
msgMessageСвоё сообщение. Заменяет сообщения по умолчанию для всех ошибок этой схемы

Коды ошибок ​

КодКогдаСообщение по умолчанию
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' }

См. также ​