type-helpers.ts13 lines · main
| 1 | export type PlainObject<Value = unknown> = Record<string | number | symbol, Value> |
| 2 | |
| 3 | export type Prettify<T> = { [K in keyof T]: T[K] } & {} |
| 4 | |
| 5 | type Primitive = string | number | bigint | boolean | symbol | null | undefined |
| 6 | |
| 7 | export type DeepReadonly<T> = T extends Primitive |
| 8 | ? T |
| 9 | : T extends (infer R)[] |
| 10 | ? ReadonlyArray<DeepReadonly<R>> |
| 11 | : T extends object |
| 12 | ? { readonly [K in keyof T]: DeepReadonly<T[K]> } |
| 13 | : T |