@beenotung/tslib
Version:
utils library in Typescript
41 lines (40 loc) • 1.57 kB
TypeScript
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;