enumOf
Значения TypeScript-enum или объекта as const.
Сигнатура
ts
function enumOf<const E extends Record<string, string | number>>(e: E, msg?: Message): Schema<E[keyof E]>Параметры
| Параметр | Тип | Описание |
|---|---|---|
e | enum | object | enum или объект со значениями |
msg | Message | Своё сообщение |
Особенности
- Проверяются значения, а не имена: для
enum Role { Admin = 'admin' }подходит'admin', а не'Admin'. - У числовых
enumTypeScript добавляет обратные ключи (Level[0] === 'Low') — они не считаются допустимыми значениями. - Работает как
oneOf: тот же код ошибки и параметр{options}.
Коды ошибок
| Код | Когда | Сообщение по умолчанию |
|---|---|---|
required | Значение пустое | Required |
oneOf | Значения нет в enum | Must 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'>