infer 递归
有这么一个类型
type Arr = [1, 2, 3, 4]
希望通过一个 ts 工具变成
type Arr = [4,3,2,1]
完整代码
type Arr = [1, 2, 3, 4]
type ReveArr<T extends any[]> = T extends [infer First, ...infer rest] ? [...ReveArr<rest>, First] : T
type Res = ReveArr<Arr>
具体思路 首先使用泛型约束 约束只能传入数组类型的东西 然后从数组中提取第一个,放入新数组的末尾,反复此操作,形成递归 满足结束条件返回该类型