UNPKG

@thisisagile/easy

Version:

Straightforward library for building domain-driven microservice architectures

33 lines (32 loc) 1.43 kB
import { Id } from './Id'; import { List } from './List'; import { Validatable } from './Validatable'; import { JsonValue } from './Json'; import { Get } from './Get'; import { TypeGuard } from './TypeGuard'; export type EnumConstructor<E = unknown> = { all<E extends Enum>(): List<E>; byIds<E extends Enum>(ids: Id[]): List<E>; byId<E extends Enum>(id: Id, alt?: Get<E, unknown>): E; isEnum: boolean; }; export declare const isEnumConstructor: <E = unknown>(c: unknown) => c is EnumConstructor<E>; export declare abstract class Enum implements Validatable { readonly name: string; readonly id: Id; readonly code: string; static isEnum: boolean; protected constructor(name: string, id?: Id, code?: string); get isValid(): boolean; static all<E extends Enum>(): List<E>; static filter<E extends Enum>(p: (value: E, index: number, array: E[]) => unknown, params?: unknown): List<E>; static first<E extends Enum>(p?: (value: E, index: number, array: E[]) => unknown, params?: unknown): E; static byIds<E extends Enum>(ids?: Id[]): List<E>; static byId<E extends Enum>(id: Id, alt?: Get<E, unknown>): E; protected static allTuple<E extends Enum>(): Record<Id, E>; equals<E extends Enum>(other: E | Id): other is E; isIn<E extends Enum>(...items: E[] | Id[]): boolean; toJSON(): JsonValue; toString(): string; } export declare const isEnum: TypeGuard<Enum>;