MST

星途 面试题库

面试题:TypeScript类型体操之条件类型递归与逆变

在TypeScript中,定义两个类型`ToArray`和`Reverse`。 `ToArray`接受一个类型参数`T`,如果`T`是数组类型,则直接返回`T`,否则将`T`包装成一个数组类型。例如: ```typescript type A1 = ToArray<string>; // 期望A1为string[] type A2 = ToArray<string[]>; // 期望A2为string[] ``` `Reverse`接受一个数组类型`T`,递归地反转其元素类型。例如: ```typescript type R1 = Reverse<[1, 2, 3]>; // 期望R1为[3, 2, 1] type R2 = Reverse<[1, [2, 3], 4]>; // 期望R2为[4, [3, 2], 1] ``` 请在实现`Reverse`时,利用`ToArray`,并且要处理好逆变相关的类型问题。
36.7万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
type ToArray<T> = T extends Array<infer U> ? T : [T];

type Reverse<T extends any[]> = T extends [infer First, ...infer Rest]
  ? [...Reverse<ToArray<Rest>>, First]
  : [];