@zerochae/ts-enum
Version:
A TypeScript Enum library inspired by Java's Enum.
8 lines (7 loc) • 406 B
text/typescript
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">;