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
TypeScript
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);
}