enum-plus
Version:
A drop-in replacement for native enum. Like native enum but much better!
41 lines (40 loc) • 1.32 kB
TypeScript
import type { EnumItemInit, EnumItemOptions, EnumKey, EnumValue, ValueTypeFromSingleInit } from './types';
import { ENUM_ITEM } from './utils';
/**
* Enum item class
*
* @template V General type of value
* @template K General type of key
* @template T Initialize object of enum item
*/
export declare class EnumItemClass<T extends EnumItemInit<V>, K extends EnumKey<any> = string, V extends EnumValue = ValueTypeFromSingleInit<T, K>> {
#private;
/** Enum item value */
readonly value: V;
/** Enum item label (or called display name) */
readonly label: string;
/** Enum item key */
readonly key: K;
/** Original initialization object */
readonly raw: T;
/**
* **EN:** A boolean value indicates that this is an enum item instance.
*
* **CN:** 布尔值,表示这是一个枚举项实例
*/
readonly [ENUM_ITEM] = true;
/**
* Instantiate an enum item
*
* @param key Enum item key
* @param value Enum item value
* @param label Enum item display name
* @param raw Original initialization object
* @param options Construction options
*/
constructor(key: K, value: V, label: string, raw: T, options?: EnumItemOptions);
readonly(): this;
toString(): any;
toLocaleString(): any;
valueOf(): V;
}