Skip to content

Latest commit

 

History

History
69 lines (50 loc) · 1.34 KB

File metadata and controls

69 lines (50 loc) · 1.34 KB

typelab / utils / ArrayTake

type ArrayTake<T, TakeLength> = T extends ReadonlyArray ? IsNumber<TakeLength> extends true ? _IfNotAnyOrNever<T, TakeLength extends number ? `${TakeLength}` extends `-${infer TakeLength extends number}` ? _ArrayTakeNegative<T, TakeLength> : _ArrayTakePositive<T, TakeLength> : never> : never : never;

Takes the first TakeLength elements from an array (or tuple).

If TakeLength is negative, the elements are taken starting from the end of the array/tuple.

Type Parameters

Type Parameter Default type Description

T

The array or tuple type to take elements from.

TakeLength

PropValue<T, "length">

The number of elements to take from the start or end, defaults to T['length']

Example

type Result1 = ArrayTake<[1, 2, 3, 4], 2>; // [1, 2]
type Result2 = ArrayTake<[1, 2, 3, 4], -2>; // [3, 4]
type Result3 = ArrayTake<[1, 2, 3, 4], 5>; // [1, 2, 3, 4]
type Result4 = ArrayTake<[1, 2, 3, 4]>; // [1, 2, 3, 4]
type Never1 = ArrayTake<[1, 2, 3, 4], any>; // never
type Never2 = ArrayTake<[1, 2, 3, 4], never>; // never
type Never3 = ArrayTake<any, 1>; // never