sorting-lib
Version:
A library that makes sorting easier by introducing `Comparator`
20 lines (19 loc) • 844 B
TypeScript
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 {};