UNPKG

mobx-keystone

Version:

A MobX powered state management solution based on data trees with first class support for TypeScript, snapshots, patches and much more

40 lines (39 loc) 904 B
/** * @ignore * * A primitive value. */ export type PrimitiveValue = undefined | null | boolean | number | string | bigint; /** * @ignore * * A JSON-compatible primitive value. */ export type JSONPrimitiveValue = null | boolean | number | string; /** * @ignore * * Checks if a value is optional (undefined or any). * * Examples: * - string = false * - undefined = true * - string | undefined = true * - string & undefined = false, but we don't care * - any = true * - unknown = false, but we don't care * - null = false * - string | null = false * - string & null = false */ export type IsOptionalValue<C, TV, FV> = IsNeverType<Extract<C, undefined>, FV, TV>; /** * @ignore */ export type IsNeverType<T, IfNever, IfNotNever> = [T] extends [never] ? IfNever : IfNotNever; /** * @ignore */ export type Flatten<T> = T extends Record<any, any> ? { [P in keyof T]: T[P]; } : T;