UNPKG

enum-plus

Version:

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

69 lines (68 loc) 4.24 kB
import type { EnumItemClass } from './enum-item'; import type { BooleanFirstOptionConfig, ColumnFilterItem, EnumInit, EnumItemOptionData, EnumItemOptions, EnumKey, EnumValue, FindEnumKeyByValue, FindLabelByValue, IEnumItems, MenuItemOption, ObjectFirstOptionConfig, PrimitiveOf, 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<KV extends V | K | NonNullable<PrimitiveOf<V>> | NonNullable<PrimitiveOf<K>> | undefined>(keyOrValue: KV): (undefined extends KV ? undefined : never) | (KV extends undefined ? undefined : NonNullable<KV> extends K ? T[NonNullable<KV>] extends { label: unknown; } ? T[NonNullable<KV>]['label'] extends undefined ? NonNullable<KV> : string : NonNullable<KV> : NonNullable<KV> extends V ? FindLabelByValue<T, NonNullable<KV>> : PrimitiveOf<K> extends KV ? string | undefined : PrimitiveOf<V> extends KV ? string | undefined : undefined); key<IV extends V | NonNullable<PrimitiveOf<V>> | undefined>(value?: IV): (undefined extends IV ? undefined : never) | (IV extends undefined ? undefined : NonNullable<IV> extends V ? FindEnumKeyByValue<T, NonNullable<IV>> : PrimitiveOf<V> extends NonNullable<IV> ? K | undefined : undefined); raw(): T; raw<IK extends V | K | Exclude<EnumValue, string> | NonNullable<string>>(keyOrValue: IK): IK extends K ? T[IK] : IK extends V ? T[FindEnumKeyByValue<T, IK>] : T[K] | undefined; has(keyOrValue?: string | V): 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; /** @deprecated Use `toValueMap` instead */ valuesEnum(): ValueMap; toMenu(): MenuItemOption<V>[]; /** @deprecated Use `toMenu` instead */ menus(): MenuItemOption<V>[]; toFilter(): ColumnFilterItem<V>[]; /** @deprecated Use `toFilter` instead */ filters(): ColumnFilterItem<V>[]; /** @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> { }