Skip to main content

3192 - Reverse

Answer TestCases

实现类型版本的数组反转 Array.reverse

例如:

type a = Reverse<['a', 'b']> // ['b', 'a']
type b = Reverse<['a', 'b', 'c']> // ['c', 'b', 'a']

Solution

type Reverse<T extends unknown[]> = T extends [...infer Rest, infer Last]
? [Last, ...Reverse<Rest>]
: T

通过 extendsinfer 组合,将数组分为两部分,

  • 除数组最后一个元素外的 Rest
  • 数组最后一个元素 Last

之后,返回类型中,将 Last 将置于数组头部,剩余部分继续反转,即可得到最终结果