type-plus
Version:
Provides additional types for TypeScript.
19 lines • 794 B
TypeScript
import type { TupleType } from '../tuple/tuple_type.js';
/**
* 🦴 *utilities*
*
* Gets the last type in the array or tuple that matches the `Criteria`.
*
* If the `Criteria` is not met, it will return `never'.
*
* For `Array<T>`, it will return `T | undefined` if `T` satisfies `Criteria`.
*
* @example
* ```ts
* ArrayPlus.Find<Array<1 | 2 | 'x'>, number> // 1 | 2 | undefined
*
* ArrayPlus.Find<[true, 123, 'x', 321], number> // 321
* ```
*/
export type FindLast<A extends Array<any>, Criteria> = TupleType<A, A['length'] extends 0 ? never : A extends [...infer Heads, infer Last] ? Last extends Criteria ? Last : FindLast<Heads, Criteria> : never, A extends Array<infer T> ? (T extends Criteria ? T | undefined : never) : never>;
//# sourceMappingURL=array.find_last.d.ts.map