Skip to content

enumOf ​

Значения TypeScript-enum или объекта as const.

Сигнатура ​

ts
function enumOf<const E extends Record<string, string | number>>(e: E, msg?: Message): Schema<E[keyof E]>

Параметры ​

ПараметрТипОписание
eenum | objectenum или объект со значениями
msgMessageСвоё сообщение

Особенности ​

  • Проверяются значения, а не имена: для enum Role { Admin = 'admin' } подходит 'admin', а не 'Admin'.
  • У числовых enum TypeScript добавляет обратные ключи (Level[0] === 'Low') — они не считаются допустимыми значениями.
  • Работает как oneOf: тот же код ошибки и параметр {options}.

Коды ошибок ​

КодКогдаСообщение по умолчанию
requiredЗначение пустоеRequired
oneOfЗначения нет в enumMust be one of: {options}

Примеры ​

ts
enum Role {
  Admin = 'admin',
  User = 'user',
}

const role = enumOf(Role); // Schema<Role>

validate(role, 'admin').valid;   // true
validate(role, 'Admin').errors;  // { '': 'Must be one of: admin, user' }
ts
const Status = { Draft: 'draft', Published: 'published' } as const;

const status = enumOf(Status); // Schema<'draft' | 'published'>

См. также ​

  • oneOf — список значений прямо в схеме
  • variant — enum как поле-признак