frontend/.pnpm-store/v3/files/42/a989a856c2a935ccfc899c44e0ba584989138cc72f97941a28ed79c3d9ab393a7fa06b878d68522db7e6202a0e508669e001d4cbb560d668e7613591b02b49

29 lines
771 B
Plaintext

/**
Extracts the type of the last element of an array.
Use-case: Defining the return type of functions that extract the last element of an array, for example [`lodash.last`](https://lodash.com/docs/4.17.15#last).
@example
```
import type {LastArrayElement} from 'type-fest';
declare function lastOf<V extends readonly any[]>(array: V): LastArrayElement<V>;
const array = ['foo', 2];
typeof lastOf(array);
//=> number
```
@category Array
@category Template literal
*/
export type LastArrayElement<ValueType extends readonly unknown[]> =
ValueType extends readonly [infer ElementType]
? ElementType
: ValueType extends readonly [infer _, ...infer Tail]
? LastArrayElement<Tail>
: ValueType extends ReadonlyArray<infer ElementType>
? ElementType
: never;