enum-plus
Version:
A drop-in replacement for native enum. Like native enum but much better!
69 lines (68 loc) • 4.24 kB
TypeScript
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> {
}