UNPKG

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

65 lines (64 loc) 1.94 kB
import type { AnyStandardType, AnyType, ObjectType, ObjectTypeFunction } from "./schemas"; import { TypeInfo } from "./TypeChecker"; /** * A type that represents a plain object. * Note that the parameter must be a function that returns an object. This is done so objects can support self / cross types. * * Example: * ```ts * // notice the ({ ... }), not just { ... } * const pointType = types.object(() => ({ * x: types.number, * y: types.number * })) * ``` * * @typeparam T Type. * @param objectFunction Function that generates an object with types. * @returns */ export declare function typesObject<T>(objectFunction: T): T; /** * `types.object` type info for an object props. */ export interface ObjectTypeInfoProps { readonly [propName: string]: Readonly<{ type: AnyStandardType; typeInfo: TypeInfo; }>; } /** * `types.object` type info. */ export declare class ObjectTypeInfo extends TypeInfo { private _objTypeFn; private _props; get props(): ObjectTypeInfoProps; constructor(thisType: AnyStandardType, _objTypeFn: ObjectTypeFunction); } /** * A type that represents frozen data. * * Example: * ```ts * const frozenNumberType = types.frozen(types.number) * const frozenAnyType = types.frozen(types.unchecked<any>()) * const frozenNumberArrayType = types.frozen(types.array(types.number)) * const frozenUncheckedNumberArrayType = types.frozen(types.unchecked<number[]>()) * ``` * * @typeParam T Type. * @param dataType Type of the frozen data. * @returns */ export declare function typesFrozen<T extends AnyType>(dataType: T): ObjectType<{ data: T; }>; /** * `types.frozen` type info. */ export declare class FrozenTypeInfo extends TypeInfo { readonly dataType: AnyStandardType; get dataTypeInfo(): TypeInfo; constructor(thisType: AnyStandardType, dataType: AnyStandardType); }