next.js / packages /next /src /shared /lib /deep-readonly.ts
AbdulElahGwaith's picture
Upload folder using huggingface_hub
b91e262 verified
/**
* A type that represents a deeply readonly object. This is similar to
* TypeScript's `Readonly` type, but it recursively applies the `readonly`
* modifier to all properties of an object and all elements of arrays.
*/
export type DeepReadonly<T> = T extends (infer R)[]
? ReadonlyArray<DeepReadonly<R>>
: T extends object
? {
readonly [K in keyof T]: DeepReadonly<T[K]>
}
: T