type-plus
Version:
Provides additional types for TypeScript.
18 lines • 793 B
TypeScript
import type { IsTuple } from '../tuple/tuple_type.js';
/**
* Returns an array of key-value pairs for every entry in the array or tuple.
*
* Note that this is not the same as `Array.entries(A)`,
* which returns an iterable interator.
*
* @example
* ```ts
* ArrayPlus.Entries<Array<string | number>> // Array<[number, string | number]>
* ArrayPlus.Entries<[1, 2, 3]> // [[0, 1], [1, 2], [2, 3]]
* ```
*/
export type Entries<A extends unknown[]> = IsTuple<A, Entries.Device<A, []>, A extends Array<infer T> ? Array<[number, T]> : never>;
export declare namespace Entries {
type Device<A extends unknown[], R extends unknown[]> = A['length'] extends 0 ? R : A extends [...infer F, infer N] ? Device<F, [[F['length'], N], ...R]> : never;
}
//# sourceMappingURL=array.entries.d.ts.map