UNPKG

@zerochae/ts-enum

Version:

A TypeScript Enum library inspired by Java's Enum.

8 lines (7 loc) 406 B
export type EnumInstanceType<T> = T extends { prototype: infer R } ? R : never; export type EnumInstanceMap<T> = { [K in keyof T]: EnumInstanceType<T> }; export type EnumRegistry<T> = Omit<EnumInstanceMap<T>, "prototype"> & { values(): EnumInstanceType<T>[]; valueOf(value: EnumValidKeys<T>): EnumInstanceType<T>; }; export type EnumValidKeys<T> = Exclude<keyof T, "values" | "valueOf" | "prototype">;