跳到主要内容

Reverse

介绍

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

ts
type a = Reverse<['a', 'b']> // ['b', 'a']
type b = Reverse<['a', 'b', 'c']> // ['c', 'b', 'a']
ts
type a = Reverse<['a', 'b']> // ['b', 'a']
type b = Reverse<['a', 'b', 'c']> // ['c', 'b', 'a']
View on GitHub

起点

ts
/* _____________ Your Code Here _____________ */
 
type Reverse<T> = any
 
/* _____________ Test Cases _____________ */
 
type cases = [
Expect<Equal<Reverse<[]>, []>>,
Type 'false' does not satisfy the constraint 'true'.2344Type 'false' does not satisfy the constraint 'true'.
Expect<Equal<Reverse<['a', 'b']>, ['b', 'a']>>,
Type 'false' does not satisfy the constraint 'true'.2344Type 'false' does not satisfy the constraint 'true'.
Expect<Equal<Reverse<['a', 'b', 'c']>, ['c', 'b', 'a']>>,
Type 'false' does not satisfy the constraint 'true'.2344Type 'false' does not satisfy the constraint 'true'.
]
ts
/* _____________ Your Code Here _____________ */
 
type Reverse<T> = any
 
/* _____________ Test Cases _____________ */
 
type cases = [
Expect<Equal<Reverse<[]>, []>>,
Type 'false' does not satisfy the constraint 'true'.2344Type 'false' does not satisfy the constraint 'true'.
Expect<Equal<Reverse<['a', 'b']>, ['b', 'a']>>,
Type 'false' does not satisfy the constraint 'true'.2344Type 'false' does not satisfy the constraint 'true'.
Expect<Equal<Reverse<['a', 'b', 'c']>, ['c', 'b', 'a']>>,
Type 'false' does not satisfy the constraint 'true'.2344Type 'false' does not satisfy the constraint 'true'.
]
take the challenge

解决方案

Spoiler warning // Click to reveal answer
ts
type Reverse<T extends any[]> = T extends [infer F, ...infer Rest]
? [...Reverse<Rest>, F]
: []
 
 
ts
type Reverse<T extends any[]> = T extends [infer F, ...infer Rest]
? [...Reverse<Rest>, F]
: []
 
 
view more solutions