UNPKG

@cuppachino/type-space

Version:

A collection of type utilities for TypeScript.

20 lines (19 loc) 540 B
import type { IgnoreMutability, UnknownArray } from '../index.js'; /** * Reverses a tuple type. * * @example * ``` * Reverse<[1, 2, 3]> // [3, 2, 1] * ``` */ export type Reverse<T extends UnknownArray> = IgnoreMutability<T> extends T ? ReverseReadonly<T> : ReverseMutable<T>; /** * @internal */ type ReverseMutable<T> = T extends [infer F, ...infer R] ? [...Reverse<R>, F] : []; /** * @internal */ type ReverseReadonly<T> = T extends readonly [infer F, ...infer R] ? readonly [...ReverseReadonly<R>, F] : readonly []; export {};