Jsonified
type alias in meocord/core Since 4.1.0
type Jsonified<T> = unknown extends T
? unknown
: [T] extends [JsonSafe]
? T
: T extends { toJSON(...args: any[]): infer R }
? Jsonified<R>
: T extends string | number | boolean | null
? T
: T extends bigint
? never
: T extends JsonDropped
? undefined
: T extends ReadonlyMap<unknown, unknown> | ReadonlySet<unknown>
? Record<string, never>
: T extends readonly unknown[]
? { -readonly [I in keyof T]: JsonItem<T[I]> }
: { [K in keyof JsonObject<T>]: JsonObject<T>[K] }A value as it arrives after a trip through JSON: what toJSON returns, so a Date as a string; a Map or a Set
as an empty object; a function, a symbol or undefined left out of an object, null in a list, and undefined on
its own.
A BigInt cannot be written, so it is never.