MST

星途 面试题库

面试题:TypeScript 递归条件类型与映射类型深度应用

假设存在一个复杂的嵌套类型 `NestedObject`,示例如下:`type NestedObject = {a: string; b: {c: number; d: {e: boolean}}}`。请编写一个 TypeScript 类型 `DeepReadOnly`,它可以将 `NestedObject` 及其所有嵌套对象的属性变为只读。例如,经过 `DeepReadOnly` 处理后,对象的所有属性都不可重新赋值,即使是嵌套很深的属性。要求使用递归条件类型和映射类型实现。
33.2万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

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

type NestedObject = {a: string; b: {c: number; d: {e: boolean}}};
type ReadOnlyNestedObject = DeepReadOnly<NestedObject>;