UNPKG

enum-plus

Version:

A drop-in replacement for native enum. Like native enum but much better!

67 lines (66 loc) 3.47 kB
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> { }