@rt_lite/api
Version:
An unoficial rotten tomatoes REST api
28 lines (25 loc) • 535 B
text/typescript
/**
* Describes a deeply-readonly array type
*
* @public
*/
export type ImmutableArray<T> = readonly Immutable<T>[];
/**
* Describes a deeply-readonly object type
*
* @public
*/
export type ImmutableObject<T> = {
readonly [P in keyof T]: Immutable<T[P]>;
};
/**
* Describes a deeply-readonly type
*
* @public
*/
export type Immutable<T> =
T extends (infer R)[] ? ImmutableArray<R> :
// eslint-disable-next-line @typescript-eslint/ban-types
T extends Function ? T :
T extends object ? ImmutableObject<T> :
T;