export type RecursiveReadonlyItem = { readonly [P in keyof T]: RecursiveReadonly; }; export type RecursiveReadonlyField = T extends Array ? ReadonlyArray> : RecursiveReadonly; export type RecursiveReadonly = T extends number | string | boolean ? T : ( T extends Array ? ReadonlyArray> : RecursiveReadonlyItem);