advanced-map-altered-equal
Version:
Map-like class with customizable equality operator
30 lines (29 loc) • 1.1 kB
TypeScript
import Base from 'advanced-map-base';
import { FindingResult } from 'convenient-typescript-utilities';
import { IterableMapLike, MapLikeConstructor, EqualFunc } from 'advanced-map-types';
/**
* This class allows one to alter equality comparision
*/
declare class AlteredEqual<Key, Value, Data extends IterableMapLike<Key, Value> = Map<Key, Value>> extends Base<Key, Value, Data> {
private readonly equal;
/**
* @param Map A constructor (a.k.a class) that creates an iterable Map-like object
* @param equal Function that compares keys, default to `Object.is`
*/
constructor(Map: MapLikeConstructor<Data>, equal?: EqualFunc<Key>);
find(key: Key): AlteredEqual.Find.Result<Key, Value>;
has(key: Key): boolean;
get(key: Key): Value | undefined;
set(key: Key, value: Value): this;
delete(key: Key): boolean;
}
declare namespace AlteredEqual {
namespace Find {
type Result<Key, Value> = FindingResult<Entry<Key, Value>>;
}
interface Entry<Key, Value> {
readonly key: Key;
readonly value: Value;
}
}
export = AlteredEqual;