UNPKG

sorting-lib

Version:

A library that makes sorting easier by introducing `Comparator`

20 lines (19 loc) 844 B
import { Primitive } from './primitive-comparators'; import { Comparator } from './comparator'; import { Nil } from './nil'; export interface KeyGetter<T> { (t: T): Primitive | Nil; } export declare enum NilAs { Min = 0, Max = 1 } declare type NestedKey<T, K extends keyof T> = K extends string ? `${K}.${KeysPath<T[K]>}` : never; declare type KeysPath<T> = { [K in keyof T]-?: K extends string ? T[K] extends Primitive | Nil ? K : NestedKey<T, K> : never; }[keyof T]; export declare function comparing<T>(key: KeysPath<T>): Comparator<T>; export declare function comparing<T>(key: KeysPath<T>, remapNilTo: NilAs): Comparator<T>; export declare function comparing<T>(primitiveGetter: KeyGetter<T>): Comparator<T>; export declare function comparing<T>(primitiveGetter: KeyGetter<T>, remapNilTo: NilAs): Comparator<T>; export {};