MST
星途 面试题库

面试题:TypeScript条件类型结合泛型:多态递归类型转换

实现一个TypeScript类型 `PolyMorphicTransform<T, U>`,它可以根据 `T` 的结构,将 `T` 中的每个值类型转换为 `U` 类型,同时保持结构不变。例如,如果 `T` 是 `{ a: [1, 2], b: { c: 'hello' } }`,`U` 是 `string`,则转换后的类型应为 `{ a: ['string','string'], b: { c:'string' } }`。这里需要考虑递归处理对象和数组的嵌套结构。
27.5万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
type PolyMorphicTransform<T, U> = T extends Array<infer Item>
  ? Array<PolyMorphicTransform<Item, U>>
    : T extends object
      ? {
          [K in keyof T]: PolyMorphicTransform<T[K], U>;
        }
      : U;