webamp/js/Disposable.ts
2018-12-14 17:03:26 -08:00

19 lines
437 B
TypeScript

type Teardown = (() => void) | { dispose: () => void };
export default class Disposable {
_teardowns: Teardown[] = [];
add(...teardowns: Teardown[]): void {
this._teardowns.push(...teardowns);
}
dispose() {
this._teardowns.forEach(teardown => {
if (typeof teardown === "function") {
teardown();
} else if (typeof teardown.dispose === "function") {
teardown.dispose();
}
});
}
}