UNPKG

@pabra/sortby

Version:

Provide typesafe function to be passed to Array.prototype.sort() to sort an Array of Objects by multiple keys.

12 lines (11 loc) 523 B
declare type AnyRecord = Record<string, any>; declare type Direction = 'asc' | 'desc'; declare type KeyOrExtractor<T extends AnyRecord> = ((thing: T) => T[keyof T]) | keyof T; declare type KeyDirectionTuple<T extends AnyRecord> = [KeyOrExtractor<T>, Direction]; declare const enum Comparison { lower = -1, greater = 1, equal = 0 } export declare function by<T extends AnyRecord>(...keys: Readonly<(KeyDirectionTuple<T> | KeyOrExtractor<T>)[]>): (left: Readonly<T>, right: Readonly<T>) => Comparison; export {};