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