[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

posted @ 2025-04-05 19:47  Zhentiw  阅读(13)  评论(0)    收藏  举报