type-comparator
Version:
Useful comparator functions written on Typescript
43 lines (42 loc) • 1.35 kB
TypeScript
export interface Comparator {
(a: any, b: any): number;
}
export declare type Mutation = (c: Comparator) => Comparator;
export declare enum MutationType {
MAP = "map",
REVERSE = "reverse",
IF = "if"
}
export declare type MutationDescriptor = ReverseMutationDescriptor | MapMutationDescriptor | IfMutationDescriptor;
export interface MutationDescriptorBase {
type: MutationType;
}
export interface ReverseMutationDescriptor extends MutationDescriptorBase {
type: MutationType.REVERSE;
}
export interface MapMutationDescriptor extends MutationDescriptorBase {
type: MutationType.MAP;
mapper: Mapper;
}
export interface IfMutationDescriptor extends MutationDescriptorBase {
type: MutationType.IF;
condition: Condition;
comparator?: Comparator;
}
export declare type Mapper = (item: any) => any;
export declare type Condition = (item: any) => boolean;
export interface ThenChainable {
then(comparator: Comparator): ElseChainable;
}
export interface ElseChainable {
else(comparator: Comparator): Comparator;
elif(condition: Condition): ThenChainable;
}
export interface Chainable {
reverse(): this;
map(mapper: Mapper): this;
if(condition: Condition): ThenChainable;
use(comparatorOrComparators: Comparator | Comparator[]): Comparator;
asc(): Comparator;
desc(): Comparator;
}