Create a subarray of Arr from index Start to End. Indexes with negative numbers will be counted from reversely.
Signature:
export type Slice<
Arr extends readonly unknown[],
Start extends number = 0,
End extends number = Arr['length'],
> = Arr extends Arr
? true extends IsTuple<Arr>
? true extends IsReadonlyArray<Arr>
? Readonly<
InternalSlice<
Arr,
InternalNormalizeSliceIndex<Arr, Start>,
InternalNormalizeSliceIndex<Arr, End>
>
>
: InternalSlice<
Arr,
InternalNormalizeSliceIndex<Arr, Start>,
InternalNormalizeSliceIndex<Arr, End>
>
: Arr
: neverReferences: IsTuple, IsReadonlyArray, InternalSlice, InternalNormalizeSliceIndex
// Expect: [0, 1]
type Foo = Slice<[0, 1, 2, 3], 0, 2>
// Expect: [2]
type Bar = Slice<[0, 1, 2, 3], 2, -1>