type-helpers.ts13 lines · main
1export type PlainObject<Value = unknown> = Record<string | number | symbol, Value>
2
3export type Prettify<T> = { [K in keyof T]: T[K] } & {}
4
5type Primitive = string | number | bigint | boolean | symbol | null | undefined
6
7export 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