Skip to content

Latest commit

 

History

History
45 lines (36 loc) · 1.29 KB

File metadata and controls

45 lines (36 loc) · 1.29 KB

Home > types-kit > Slice

Slice type

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
  : never

References: IsTuple, IsReadonlyArray, InternalSlice, InternalNormalizeSliceIndex

Example

// Expect: [0, 1]
type Foo = Slice<[0, 1, 2, 3], 0, 2>
// Expect: [2]
type Bar = Slice<[0, 1, 2, 3], 2, -1>