Skip to content

Latest commit

 

History

History
37 lines (28 loc) · 980 Bytes

File metadata and controls

37 lines (28 loc) · 980 Bytes

Home > types-kit > Reverse

Reverse type

Reverses an array.

Signature:

export type Reverse<T extends readonly unknown[]> = T extends T
  ? If<
      IsTuple<T>,
      T extends [infer F, ...infer R]
        ? IsReadonlyArray<T> extends true
          ? readonly [...Reverse<R>, F]
          : [...Reverse<R>, F]
        : T extends [...infer R, infer L]
        ? IsReadonlyArray<T> extends true
          ? readonly [L, ...Reverse<R>]
          : [L, ...Reverse<R>]
        : never,
      T
    >
  : never

References: If, IsTuple, IsReadonlyArray, Reverse

Example

// Expect: [3, 2, 1]
type Foo = Reverse<[1, 2, 3]>