UNPKG

rambdax

Version:

Extended version of Rambda - a lightweight, faster alternative to Ramda

41 lines (37 loc) 957 B
import {Prepend} from './Prepend' import {Pos} from '../Iteration/Pos' import {Next} from '../Iteration/Next' import {Length} from './Length' import {IterationOf} from '../Iteration/IterationOf' import {Iteration} from '../Iteration/Iteration' import {Cast} from '../Any/Cast' import {List} from './List' import {Naked} from './_Internal' import {Extends} from '../Any/Extends' /** @hidden */ type __Reverse<L extends List, LO extends List, I extends Iteration = IterationOf<'0'>> = { 0: __Reverse<L, Prepend<LO, L[Pos<I>]>, Next<I>> 1: LO }[Extends<Pos<I>, Length<L>>] /** @hidden */ export type _Reverse<L extends List, LO extends List = []> = __Reverse<Naked<L>, LO> extends infer X ? Cast<X, List> : never /** Turn a [[List]] the other way around @param L to reverse @param LO (?=`[]`) to prepend to @returns [[List]] @example ```ts ``` */ export type Reverse<L extends List> = L extends unknown ? _Reverse<L> : never