UNPKG

enum-plus

Version:

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

60 lines (59 loc) 4.41 kB
import type { EnumExtension } from 'enum-plus/extension'; import type { EnumInitOptions } from './enum'; import type { EnumItemClass, EnumItemOptions } from './enum-item'; import type { EnumItemFields, InheritableEnumItems, MapResult, ToListConfig, ToMapConfig } from './enum-items'; import { EnumItemsArray } from './enum-items'; import type { EnumInit, EnumKey, EnumValue, FindEnumKeyByValue, ListItem, PrimitiveOf, ValueTypeFromSingleInit } from './types'; import { ENUM_OPTIONS, IS_ENUM } 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>, P = any> extends EnumExtensionClass<T, K, V> implements InheritableEnumItems<T, K, V, P> { private readonly __options__; private readonly __items__; constructor(init?: T, options?: EnumInitOptions<T, K, V, P>); /** * - **EN:** A boolean value indicates that this is an enum collection instance. * - **CN:** 布尔值,表示这是一个枚举集合实例 */ get [IS_ENUM](): true; /** * - **EN:** Get the options to initialize the enum. * - **CN:** 获取初始化枚举时的选项 */ get [ENUM_OPTIONS](): EnumItemOptions<T[K], K, V, P> | undefined; [Symbol.hasInstance]<T>(instance: T): instance is Extract<T, K | V>; /** * The enum collection name, supports localization. Note that it usually returns a string, but if * a custom `localize` function is set, the return value may vary depending on the implementation * of the method. * * - **CN:** 枚举集合显示名称,支持本地化。注意,通常情况下返回的是字符串,但如果设置了自定义的 `localize` 函数,则返回值可能有所不同,取决于方法的实现 * * @returns {string | undefined} The localized name of the enum collection, or undefined if not * set. */ get name(): string | undefined; label<KV extends V | K | NonNullable<PrimitiveOf<V>> | NonNullable<PrimitiveOf<K>> | undefined>(keyOrValue: KV): (undefined extends KV ? KV & undefined : never) | (KV extends undefined ? undefined : NonNullable<KV> extends K ? T[K & KV & {}] extends { label: unknown; } ? T[K & KV & {}]["label"] extends undefined ? K & KV & {} : string : K & KV & {} : NonNullable<KV> extends V ? import("./types").FindLabelByValue<T, V & KV & {}, T[FindEnumKeyByValue<T, V & 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 ? IV & undefined : never) | (IV extends undefined ? undefined : NonNullable<IV> extends V ? FindEnumKeyByValue<T, V & 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<KV>(keyOrValue?: KV): keyOrValue is Extract<KV, K | V>; findBy(...rest: Parameters<EnumItemsArray<T, K, V, P>['findBy']>): any; toList(): ListItem<V, 'value', 'label'>[]; toList<FOV extends string | ((item: EnumItemClass<T[K], K, V, P>) => string), FOL extends string | ((item: EnumItemClass<T[K], K, V, P>) => string)>(config: ToListConfig<T, FOV, FOL, K, V, never, P>): ListItem<V, FOV extends (item: EnumItemClass<T[K], K, V, P>) => infer R ? R : FOV, FOL extends (item: EnumItemClass<T[K], K, V, P>) => infer R ? R : FOL>[]; toMap(): MapResult<T, 'value', 'label', K, V, P>; toMap<KS extends EnumItemFields | (<R extends string | symbol>(item: EnumItemClass<T[K], K, V, P>) => R), VS extends EnumItemFields | (<R>(item: EnumItemClass<T[K], K, V, P>) => R)>(config: ToMapConfig<T, KS, VS, K, V, P>): MapResult<T, KS, VS, K, V, P>; get valueType(): V; get keyType(): K; get rawType(): T[K]; }