Skip to content

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 ​

ParameterTypeDescription
eenum | objectAn enum or an object with the values
msgMessageCustom 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 ​

CodeWhenDefault message
requiredThe value is emptyRequired
oneOfThe value is not in the enumMust 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'>

See also ​

  • oneOf — a list of values right in the schema
  • variant — an enum as a tag field