UNPKG

@zerochae/ts-enum

Version:

A TypeScript Enum library inspired by Java's Enum.

12 lines (11 loc) 420 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">;