UNPKG

@beenotung/tslib

Version:
41 lines (40 loc) 1.57 kB
export type Enum<E> = ({ [value: number]: keyof E; } & { [key: string]: E; }) | Object; /** * for the sake of implicit any in object index * */ export declare function enum_i2s<E>(e: E, i: keyof E): E[keyof E]; export declare function enum_s2i<E>(e: E, s: E[keyof E]): keyof E; export declare function enum_next_i<E>(e: E, i: number & keyof E): keyof E; export declare function enum_next_s<E>(e: E, s: E[keyof E]): E[keyof E]; export declare function enum_keys<E>(e: Enum<E>): Array<string & keyof E>; /** * numeric values * */ export declare function enum_indices<E>(e: Enum<E>): Array<keyof E>; /** * numeric or string values * if original enum -> numeric values; * stringified enum -> string values * */ export declare function enum_values<E>(e: Enum<E>): E[]; export declare function enum_last_i<E>(e: Enum<E>): E & number; export declare function enum_last_s<E>(e: Enum<E>): keyof E & string; export declare function enum_is_last_i<E>(e: Enum<E>, i: E): boolean; export declare function enum_is_last_s<E>(e: Enum<E>, s: keyof E): boolean; export declare function enum_is_last<E>(e: Enum<E>, v: E | number | keyof E | string): boolean; export declare function enum_is_in_range<E extends object>(e: E, v: E[keyof E] | keyof E): boolean; export declare function enum_not_equals<E1, E2>(e1: E1, e2: E2): boolean; /** * inplace update * * @return original (modified) enum * */ export declare function enum_set_string<E extends object>(e: E): E; /** * inplace update * */ export declare function enum_only_string<E extends object>(e: E): E;