UNPKG

type-plus

Version:
20 lines 810 B
import type { IsStrictNumber } from '../number/strict_number_type.js'; import type { TupleType } from '../tuple/tuple_type.js'; import type { IndexAt } from './array_index.js'; /** * 🦴 *utilities* * * Gets the type of the array or tuple at positive or negative index `N`. * * Like `Array.at()`, this type supports negative numbers. * * @alias ArrayPlus.At * @see https://github.com/microsoft/TypeScript/issues/53345#issuecomment-1477138167 * * ```ts * type R = At<[1, 2, 3], 2> // 3 * type R = At<[1, 2, 3], -1> // 3 * ``` */ export type At<A extends unknown[], N extends number, Fail = never> = IndexAt<A, N, Fail, Fail, Fail> extends infer I ? I extends number ? TupleType<A, IsStrictNumber<I, A[I] | undefined, A[I]>, A[I] | undefined> : Fail : never; //# sourceMappingURL=array.at.d.ts.map