1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21export interface IDisposable { dispose(): void; } export class DisposableStore implements IDisposable { private readonly _toDispose = new Set<IDisposable>(); add<T extends IDisposable>(disposable: T): T { this._toDispose.add(disposable); return disposable; } dispose(): void { for (const disposable of this._toDispose) { disposable.dispose(); } this._toDispose.clear(); } }