MST

星途 面试题库

面试题:TypeScript 泛型编程复杂场景下的条件类型递归与分发

给定一个类型 `NestedArray`,它表示可能包含嵌套数组的数组类型,例如 `type NestedArray = number[] | number[][] | number[][][]` 等。编写一个泛型 `Flatten`,它能将 `NestedArray` 类型递归地展开为一维数组类型。例如 `Flatten<number[][]>` 应得到 `number[]`,`Flatten<number[][][]>` 应得到 `number[]`。并且要考虑分发条件类型,使得在使用联合类型时也能正确展开,如 `Flatten<number[] | number[][]>` 应得到 `number[]`。
42.6万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
type Flatten<N extends (number[] | number)[], Result extends number[] = []> =
    N extends [infer First, ...infer Rest]
      ? First extends number[]
          ? Flatten<[...First, ...Rest], Result>
          : Flatten<Rest, [...Result, First]>
      : Result;