Skip to content

Reverse

约 192 字小于 1 分钟

2022-12-01

题目

Github: Reverse

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

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

解题思路

略。

答案

type Reverse<T extends unknown[]> = T extends [infer L, ...infer O]
  ? [...Reverse<O>, L]
  : T

验证

type 
cases
= [
Expect
<
Equal
<
Reverse
<[]>, []>>,
Expect
<
Equal
<
Reverse
<['a', 'b']>, ['b', 'a']>>,
Expect
<
Equal
<
Reverse
<['a', 'b', 'c']>, ['c', 'b', 'a']>>,
] type
errors
= [
// @ts-expect-error
Reverse
<'string'>,
// @ts-expect-error
Reverse
<{
key
: 'value' }>,
]

参考