MST

星途 面试题库

面试题:TypeScript复杂映射类型及递归应用

设计一个通用的递归映射类型`DeepReadonly`,它能将一个可能包含嵌套对象的类型的所有属性都变为只读。例如,对于类型`interface Nested { prop1: string; prop2: { subProp1: number; subProp2: { deeperProp: boolean } } }`,使用`DeepReadonly`后,所有层次的属性都应该是只读的,给出完整的`DeepReadonly`类型定义代码。
33.7万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
type DeepReadonly<T> = {
    readonly [P in keyof T]: T[P] extends object
      ? DeepReadonly<T[P]>
       : T[P];
};