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
44 lines (43 loc) • 1.5 kB
TypeScript
import type { AnyModel } from "../model/BaseModel";
import type { ModelClass } from "../modelShared/BaseModelShared";
import type { AnyStandardType, IdentityType } from "./schemas";
import { TypeInfo } from "./TypeChecker";
declare type _Class<T> = abstract new (...args: any[]) => T;
declare type _ClassOrObject<M, K> = K extends M ? object : _Class<K> | (() => _Class<K>);
/**
* A type that represents a model. The type referenced in the model decorator will be used for type checking.
*
* Example:
* ```ts
* const someModelType = types.model(SomeModel)
* // or for recursive models
* const someModelType = types.model<SomeModel>(() => SomeModel)
* ```
*
* @typeparam M Model type.
* @param modelClass Model class.
* @returns
*/
export declare function typesModel<M = never, K = M>(modelClass: _ClassOrObject<M, K>): IdentityType<K extends M ? M : K>;
/**
* `types.model` type info for a model props.
*/
export interface ModelTypeInfoProps {
readonly [propName: string]: Readonly<{
type: AnyStandardType | undefined;
typeInfo: TypeInfo | undefined;
hasDefault: boolean;
default: any;
}>;
}
/**
* `types.model` type info.
*/
export declare class ModelTypeInfo extends TypeInfo {
readonly modelClass: ModelClass<AnyModel>;
private _props;
get props(): ModelTypeInfoProps;
get modelType(): string;
constructor(thisType: AnyStandardType, modelClass: ModelClass<AnyModel>);
}
export {};