UNPKG

find-closest

Version:

Like Array.prototype.find, but for finding the closest match.

20 lines (19 loc) 900 B
export interface Finder<R extends 'value' | 'index'> { (collection: readonly number[], target: number, filterMapFn?: FilterMapFn<number>): number; <T>(collection: readonly T[], target: number, filterMapFn: FilterMapFn<T, false>): R extends 'value' ? T : number; } /** * A type for underling functions that implement the overloaded * function signature `Finder`. * * This helps avoid "implicit 'any'" warnings - we don't need to define * these arguments over and over. * * If there's a better way to do this, please tell me! */ export declare type FinderNonOverloaded<R extends 'value' | 'index'> = <T>(collection: readonly T[], target: number, filterMapFn?: FilterMapFn<T>) => R extends 'value' ? T : number; export declare type FilterMapFn<T, R extends boolean = boolean> = (value: T, context: { index: number; target: number; collection: readonly T[]; }) => number | R;