UNPKG

advanced-map-altered-equal

Version:

Map-like class with customizable equality operator

30 lines (29 loc) 1.1 kB
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;