enumOf
Values of a TypeScript enum or an as const object.
Signature
ts
function enumOf<const E extends Record<string, string | number>>(e: E, msg?: Message): Schema<E[keyof E]>Parameters
| Parameter | Type | Description |
|---|---|---|
e | enum | object | An enum or an object with the values |
msg | Message | Custom message |
Notes
- Values are checked, not names: for
enum Role { Admin = 'admin' }'admin'is valid,'Admin'is not. - For numeric
enums TypeScript adds reverse keys (Level[0] === 'Low') — they are not valid values. - Works like
oneOf: the same error code and{options}parameter.
Error codes
| Code | When | Default message |
|---|---|---|
required | The value is empty | Required |
oneOf | The value is not in the enum | Must be one of: {options} |
Examples
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'>