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
45 lines (44 loc) • 1.72 kB
TypeScript
import type { AnyDataModel } from "../dataModel/BaseDataModel";
import type { ModelClass, ModelData } 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 data model data.
* The type referenced in the model decorator will be used for type checking.
*
* Example:
* ```ts
* const someDataModelDataType = types.dataModelData(SomeModel)
* // or for recursive models
* const someDataModelDataType = types.dataModelData<SomeModel>(() => SomeModel)
* ```
*
* @typeparam M Data model type.
* @param modelClass Model class.
* @returns
*/
export declare function typesDataModelData<M = never, K = M>(modelClass: _ClassOrObject<M, K>): IdentityType<ModelData<K extends M ? (M extends AnyDataModel ? M : never) : (K extends AnyDataModel ? K : never)>>;
/**
* `types.dataModelData` type info for a model props.
*/
export interface DataModelDataTypeInfoProps {
readonly [propName: string]: Readonly<{
type: AnyStandardType | undefined;
typeInfo: TypeInfo | undefined;
hasDefault: boolean;
default: any;
}>;
}
/**
* `types.dataModelData` type info.
*/
export declare class DataModelDataTypeInfo extends TypeInfo {
readonly modelClass: ModelClass<AnyDataModel>;
private _props;
get props(): DataModelDataTypeInfoProps;
get modelType(): string;
constructor(thisType: AnyStandardType, modelClass: ModelClass<AnyDataModel>);
}
export {};