rc-js-util
Version:
A collection of TS and C++ utilities to help writing performant and correct applications, achieved through strict typing and (removable) invariant checking.
35 lines • 1.37 kB
TypeScript
import { ISetLike } from "../typescript/i-set-like.js";
/**
* @public
* Provides a unique array with O(1) add & remove, with dirty checking on `getArray`.
*/
export interface IDirtyCheckedUniqueCollection<TItem> extends ISetLike<TItem> {
readonly isDirty: boolean;
/**
* @returns true if the item was added.
*/
reportingAdd(item: TItem): boolean;
getArray(): readonly TItem[];
getSet(): ReadonlySet<TItem>;
}
/**
* @public
* {@inheritDoc IDirtyCheckedUniqueCollection}
*/
export declare class DirtyCheckedUniqueCollection<TItem> implements IDirtyCheckedUniqueCollection<TItem>, ISetLike<TItem> {
get size(): number;
isDirty: boolean;
static mapInitializeAdd<TKey, TValue>(map: Map<TKey, IDirtyCheckedUniqueCollection<TValue>>, key: TKey, value: TValue): boolean;
static mapInitializeAdd<TKey extends object, TValue>(map: WeakMap<TKey, IDirtyCheckedUniqueCollection<TValue>>, key: TKey, value: TValue): boolean;
constructor(itemsToCopy?: readonly TItem[] | ReadonlySet<TItem>);
add(item: TItem): void;
reportingAdd(item: TItem): boolean;
delete(item: TItem): boolean;
has(item: TItem): boolean;
clear(): void;
getArray(): readonly TItem[];
getSet(): ReadonlySet<TItem>;
private readonly itemsSet;
private itemsArray;
}
//# sourceMappingURL=dirty-checked-unique-collection.d.ts.map