import MathUtil from "./MathUtil"; export default class ImmutablePrioritySet extends Set { constructor(private _values: E[]) { super(_values); } public static of(values: E[]): ImmutablePrioritySet { return new ImmutablePrioritySet(values); } public compare(a: E, b: E): number { if (!this.has(a) || !this.has(b)) { throw new Error("No such element"); } return MathUtil.compare(this._values.indexOf(a), this._values.indexOf(b)); } public iterator(): IterableIterator { return this[Symbol.iterator](); } }