UNPKG

enum-plus

Version:

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

51 lines (50 loc) 2.79 kB
import { EnumItemsArray } from './enum-values'; import type { BooleanFirstOptionConfig, ColumnFilterItem, EnumInit, EnumItemOptionData, EnumItemOptions, EnumKey, EnumValue, FindEnumKeyByValue, IEnumItems, MenuItemOption, ObjectFirstOptionConfig, ToSelectConfig, ValueTypeFromSingleInit } from './types'; import { ENUM_COLLECTION } from './utils'; /** * **EN:** Enum collection extension base class, used to extend the Enums * * **CN:** 枚举集合扩展基类,用于扩展枚举 */ export declare class EnumExtensionClass<T extends EnumInit<K, V>, K extends EnumKey<T> = EnumKey<T>, V extends EnumValue = ValueTypeFromSingleInit<T[K], K>> implements EnumExtension<T, K, V> { } /** * **EN:** Enum collection * * **CN:** 枚举项集合 */ export declare class EnumCollectionClass<T extends EnumInit<K, V>, K extends EnumKey<T> = EnumKey<T>, V extends EnumValue = ValueTypeFromSingleInit<T[K], K>> extends EnumExtensionClass<T, K, V> implements IEnumItems<T, K, V> { readonly items: EnumItemsArray<T, K, V>; readonly keys: K[]; /** * **EN:** A boolean value indicates that this is an enum collection instance. * * **CN:** 布尔值,表示这是一个枚举集合实例 */ readonly [ENUM_COLLECTION] = true; constructor(init?: T, options?: EnumItemOptions); key(value?: string | number): K | undefined; label(keyOrValue?: string | number): string | 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>[]; options(config: object & BooleanFirstOptionConfig<V>): EnumItemOptionData<'' | K, '' | V>[]; options<FK, FV>(config: object & ObjectFirstOptionConfig<FK, FV>): EnumItemOptionData<K | (FK extends never ? FV : FK), V | (FV extends never ? V : FV)>[]; toMenu(): MenuItemOption<V>[]; /** @deprecated use `toMenu` instead */ menus(): MenuItemOption<V>[]; toFilter(): ColumnFilterItem<V>[]; /** @deprecated use `toFilter` instead */ filters(): ColumnFilterItem<V>[]; toValueMap(): import("./types").ValueMap<V>; /** @deprecated use `toValueMap` instead */ valuesEnum(): import("./types").ValueMap<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; get valueType(): V; get keyType(): K; get rawType(): T[K]; }