typelab / utils / ArrayIndexes
type ArrayIndexes<T, IncludeString> = T extends ReadonlyArray ? _IfNotAnyOrNever<T, number extends T["length"] ? number : Exclude<keyof T, keyof WritableArray> extends infer IndexesString ? ParseInt<IndexesString> extends infer IndexesNumber ? IsTrue<IncludeString> extends true ? IndexesNumber | IndexesString : IndexesNumber : never : never> : never;Extracts the index keys of an Array or Tuple type.
- For a
Tuple, returnsTindex union. - For a general
Array, returnsnumbersince arrays are indexed by numbers.
| Type Parameter | Default type | Description |
|---|---|---|
|
|
‐ |
The array or |
|
|
|
Whether to include string keys ( |
The keys of the Tuple (as both string and number) or number for general arrays.
// 0 | 1 | 2
type Result1 = ArrayIndexes<[string, number, boolean]>;
// 0 | 1 | 2 | "0" | "1" | "2"
type Result2 = ArrayIndexes<[string, number, boolean], true>;
// number
type Result3 = ArrayIndexes<string[]>;
// never
type Never = ArrayIndexes<any>;