mobx-keystone
Version:
A MobX powered state management solution based on data trees with first class support for TypeScript, snapshots, patches and much more
22 lines (19 loc) • 636 B
text/typescript
import { resolveTypeChecker } from "./resolveTypeChecker"
import type { AnyType, TypeToData } from "./schemas"
import type { TypeCheckError } from "./TypeCheckError"
/**
* Checks if a value conforms to a given type.
*
* @template T Type.
* @param type Type to check for.
* @param value Value to check.
* @returns A TypeError if the check fails or null if no error.
*/
export function typeCheck<T extends AnyType>(type: T, value: TypeToData<T>): TypeCheckError | null {
const typeChecker = resolveTypeChecker(type)
if (typeChecker.unchecked) {
return null
} else {
return typeChecker.check(value, [], value)
}
}