16 lines
740 B
TypeScript
16 lines
740 B
TypeScript
import { Converter, MaybeAsyncFunction } from "../types.js";
|
|
|
|
export interface EqualityComparer<T> {
|
|
equals(a: T, b: T): boolean;
|
|
equalityComparison(): EqualityComparison<T>;
|
|
opposite(): EqualityComparer<T>;
|
|
then(equalityComparer: EqualityComparer<T>): EqualityComparer<T>;
|
|
thenEquals(equalityComparison: EqualityComparison<T>): EqualityComparer<T>;
|
|
thenEqualsUsing<U>(projection: Converter<T, U>, equalityComparison?: EqualityComparisonOrComparer<U>): EqualityComparer<T>;
|
|
}
|
|
|
|
export type EqualityComparison<T> = (first: T, second: T) => boolean;
|
|
export type EqualityComparisonOrComparer<T> = EqualityComparison<T> | EqualityComparer<T>;
|
|
|
|
export type MaybeAsyncEqualityComparison<T> = MaybeAsyncFunction<EqualityComparison<T>>;
|