[Typescript] T extends any ? {}: never
Using T extends any ? {...} : never
helps to see the type result
Example:
type DeepReadonly<T extends Record<string, any>> = T extends any
? {
readonly [K in keyof T]: T[K] extends Record<string, any>
? DeepReadonly<T[K]>
: T[K];
}
: never;
// the same as
type DeepReadonly<T extends Record<string, any>> = {
readonly [K in keyof T]: T[K] extends Record<string, any>
? DeepReadonly<T[K]>
: T[K];
}
const obj = {
a: 1,
b: 2,
c: {
d: '4'
}
}
type X = DeepReadonly<typeof obj>
vs