enum-plus
Version:
A drop-in replacement for native enum. Like native enum but much better!
67 lines (66 loc) • 3.47 kB
TypeScript
import type { EnumItemClass } from './enum-item';
import type { BooleanFirstOptionConfig, ColumnFilterItem, EnumInit, EnumItemOptionData, EnumItemOptions, EnumKey, EnumValue, FindEnumKeyByValue, IEnumItems, MenuItemOption, ObjectFirstOptionConfig, ToSelectConfig, ValueMap, ValueTypeFromSingleInit } from './types';
import { ENUM_ITEMS } from './utils';
/**
* Enum items array, mostly are simple wrappers for EnumCollectionClass
*
* @template T Type of the initialization data of the enum collection
*
* @class EnumValuesArray
*
* @extends {EnumItemClass<T, K, V>[]}
*
* @export
*
* @implements {IEnumValues<T, K, V>}
*/
export declare class EnumItemsArray<T extends EnumInit<K, V>, K extends EnumKey<T> = EnumKey<T>, V extends EnumValue = ValueTypeFromSingleInit<T[K], K>> extends Array<EnumItemClass<T[K], K, V>> implements IEnumItems<T, K, V> {
#private;
/**
* Instantiate an enum items array
*
* @memberof EnumValuesArray
*
* @param {T} raw Original initialization data object
* @param {...EnumItemClass<T[K], K, V>[]} items Enum item instance array
*/
constructor(raw: T, options: EnumItemOptions | undefined, ...items: EnumItemClass<T[K], K, V>[]);
/**
* **EN:** A boolean value indicates that this is an enum items array.
*
* **CN:** 布尔值,表示这是一个枚举项数组
*/
readonly [ENUM_ITEMS] = true;
label(keyOrValue?: string | number): string | undefined;
key(value?: string | number): K | undefined;
has(keyOrValue?: string | number): boolean;
toSelect(): EnumItemOptionData<K, V>[];
toSelect(config?: ToSelectConfig & BooleanFirstOptionConfig<V>): EnumItemOptionData<K | '', V | ''>[];
toSelect<FK = never, FV = never>(config?: ToSelectConfig & ObjectFirstOptionConfig<FK, FV>): EnumItemOptionData<K | (FK extends never ? FV : FK), V | (FV extends never ? V : FV)>[];
/** @deprecated Use `toSelect` instead */
options(): EnumItemOptionData<K, V>[];
/** @deprecated Use `toSelect` instead */
options(config?: ToSelectConfig & BooleanFirstOptionConfig<V>): EnumItemOptionData<K | '', V | ''>[];
/** @deprecated Use `toSelect` instead */
options<FK = never, FV = never>(config?: ToSelectConfig & ObjectFirstOptionConfig<FK, FV>): EnumItemOptionData<K | (FK extends never ? FV : FK), V | (FV extends never ? V : FV)>[];
toValueMap(): ValueMap<V>;
/** @deprecated Use `toValueMap` instead */
valuesEnum(): ValueMap<V>;
toMenu(): MenuItemOption<V>[];
/** @deprecated Use `toMenu` instead */
menus(): MenuItemOption<V>[];
toFilter(): ColumnFilterItem<V>[];
/** @deprecated Use `toFilter` instead */
filters(): ColumnFilterItem<V>[];
raw(): T;
raw<IK extends V | K | Exclude<EnumValue, string> | (string & {})>(keyOrValue: IK): IK extends K ? T[IK] : IK extends V ? T[FindEnumKeyByValue<T, IK>] : T[K] | undefined;
/** @deprecated Stub method, only for typing usages, not for runtime calling */
get valueType(): V;
/** @deprecated Stub method, only for typing usages, not for runtime calling */
get keyType(): K;
/** @deprecated Stub method, only for typing usages, not for runtime calling */
get rawType(): T[K];
}
/** @deprecated Use `EnumItemsArray` instead */
export declare class EnumValuesArray<T extends EnumInit<K, V>, K extends EnumKey<T> = EnumKey<T>, V extends EnumValue = ValueTypeFromSingleInit<T[K], K>> extends EnumItemsArray<T, K, V> {
}