forked from dotnet/vscode-csharp
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathdisposable.ts
29 lines (24 loc) · 959 Bytes
/
disposable.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Subscription } from 'rxjs';
export default class Disposable implements IDisposable {
private onDispose: { (): void };
constructor(onDispose: { (): void } | Subscription) {
if (!onDispose) {
throw new Error('onDispose cannot be null or empty.');
}
if (onDispose instanceof Subscription) {
this.onDispose = () => onDispose.unsubscribe();
} else {
this.onDispose = onDispose;
}
}
public dispose = (): void => {
this.onDispose();
};
}
export interface IDisposable {
dispose: () => void;
}