type-challenges icon indicating copy to clipboard operation
type-challenges copied to clipboard

9 - 深度 Readonly

Open linjunc opened this issue 3 years ago • 0 comments

解答:通过判断 value 的类型,来递归添加 readonly

type DeepReadonly<T> = {
  readonly [P in keyof T]: T[P] extends Object ? T[P] extends Function ? T[P]: DeepReadonly<T[P]> : T[P]
}
// 也可以用 keyof T[P] extends never 来判断

linjunc avatar Jul 30 '22 16:07 linjunc