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

37 lines (31 loc) 1.04 kB
import { getRootPath } from "../parent/path" import { Path } from "../parent/pathTypes" import { isTweakedObject } from "../tweaker/core" import { failure } from "../utils" /** * A type checking error. */ export class TypeCheckError { /** * Creates an instance of TypeError. * @param path Sub-path where the error occured. * @param expectedTypeName Name of the expected type. * @param actualValue Actual value. */ constructor(readonly path: Path, readonly expectedTypeName: string, readonly actualValue: any) {} /** * Throws the type check error as an actual error. * * @param typeCheckedValue Usually the value where the type check was invoked. */ throw(typeCheckedValue: any): never { let msg = "TypeCheckError: " let rootPath: Path = [] if (isTweakedObject(typeCheckedValue, true)) { rootPath = getRootPath(typeCheckedValue).path } msg += "[/" + [...rootPath, ...this.path].join("/") + "] " msg += "Expected: " + this.expectedTypeName throw failure(msg) } }