declare interface Set { adds(...values: T[]): this; toggle(value: T, addOrDel?: "add" | "del"): this; } ((prototype) => { prototype.adds = function (this: Set, ...values: T[]): Set { for (const val of values) { this.add(val); } return this; }; prototype.toggle = function (this: Set, value: T, addOrDel?: "add" | "del"): Set { if (addOrDel === "add") { this.add(value); } else if (addOrDel === "del") { this.delete(value); } else if (this.has(value)) { this.delete(value); } else { this.add(value); } return this; }; })(Set.prototype);