type-plus
Version:
Provides additional types for TypeScript.
30 lines • 959 B
TypeScript
import type { NeverType } from '../never/never_type.js';
/**
* 🦴 *utilities*
*
* Gets the last entry in the tuple or the type of array `T`.
*
* @example
* ```ts
* type R = Last<[1, 2, 3]> // 3
* type R = Last<string[]> // string
*
* type R = Last<[]> // never
* ```
*
* @typeParam Options['caseNever'] Return type when `T` is `never`.
* Default to `never`.
*
* @typeParam Options['caseEmptyTuple'] Return type when `T` is `[]`.
* Default to `never`.
*/
export type Last<T extends unknown[], Options extends Last.Options = Last.DefaultOptions> = NeverType<T, Options['caseNever'], T['length'] extends 0 ? Options['caseEmptyTuple'] : T extends [...unknown[], infer R] ? R : T[0]>;
export declare namespace Last {
interface Options extends NeverType.Options {
caseEmptyTuple?: unknown;
}
interface DefaultOptions extends NeverType.DefaultOptions {
caseEmptyTuple: never;
}
}
//# sourceMappingURL=last.d.ts.map