mobx-keystone-mindreframer
Version:
A MobX powered state management solution based on data trees with first class support for Typescript, snapshots, patches and much more
46 lines (45 loc) • 1.14 kB
TypeScript
import type { IdentityType } from "./schemas";
/**
* @ignore
* Extract enum values out of a enum object.
*/
export declare type EnumValues<E> = E extends Record<infer _K, // eslint-disable-line @typescript-eslint/no-unused-vars
infer V> ? V : never;
/**
* An enum type, based on a Typescript alike enum object.
* Syntactic sugar for `types.or(...enum_values.map(types.literal))`
*
* Example:
* ```ts
* enum Color {
* Red = "red",
* Green = "green"
* }
*
* const colorType = types.enum(Color)
* ```
*
* @template E Enum type.
* @param enumObject
* @returns
*/
export declare function typesEnum<E extends object>(enumObject: E): IdentityType<EnumValues<E>>;
/**
* An enum type, based on a Typescript alike enum object.
* Syntactic sugar for `types.or(...enum_values.map(types.literal))`
*
* Example:
* ```ts
* enum Color {
* Red = "red",
* Green = "green"
* }
*
* const colorType = types.enum(Color)
* ```
*
* @template E Enum type.
* @param enumObject
* @returns
*/
export declare function typesEnum<E = never>(enumObject: object): IdentityType<E>;