MST

星途 面试题库

面试题:TypeScript 泛型工具类型的深度递归与条件判断

实现一个工具类型 `DeepMutable`,它能将一个深度嵌套的对象类型中的所有属性变为可变(mutable)。例如,对于类型 `interface Deep { a: { b: { c: string; }; }; }`,`DeepMutable<Deep>` 应该返回 `{ a: { b: { c: string; }; }; }`,其中每个层级的属性都不再是只读的。要求考虑到数组、普通对象以及可能的循环引用情况。
44.9万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
type DeepMutable<T> = T extends Function
  ? T
  : T extends Array<infer U>
  ? Array<DeepMutable<U>>
  : T extends object
  ? { -readonly [K in keyof T]: DeepMutable<T[K]>; }
  : T;