提交 94e477d0 编写于 作者: J Johannes Rieken

💄 polish dispose signature

上级 98d5a9d4
......@@ -4,8 +4,6 @@
*--------------------------------------------------------------------------------------------*/
'use strict';
import { isArray } from './types';
export const empty: IDisposable = Object.freeze({
dispose() { }
});
......@@ -14,17 +12,22 @@ export interface IDisposable {
dispose(): void;
}
export function dispose<T extends IDisposable>(...disposables: T[]): T;
export function dispose<T extends IDisposable>(disposable: T): T;
export function dispose<T extends IDisposable>(...disposables: T[]): T[];
export function dispose<T extends IDisposable>(disposables: T[]): T[];
export function dispose<T extends IDisposable>(...disposables: T[]): T[] {
const first = disposables[0];
if (isArray(first)) {
disposables = first as any as T[];
export function dispose<T extends IDisposable>(first: T | T[], ...rest: T[]): T | T[] {
if (Array.isArray(first)) {
first.forEach(d => d && d.dispose());
return [];
} else if (rest.length === 0 && first) {
first.dispose();
return first;
} else {
dispose(first);
dispose(rest);
return [];
}
disposables.forEach(d => d && d.dispose());
return [];
}
export function combinedDisposable(disposables: IDisposable[]): IDisposable {
......@@ -105,4 +108,4 @@ export abstract class ReferenceCollection<T> {
export class ImmortalReference<T> implements IReference<T> {
constructor(public object: T) { }
dispose(): void { /* noop */ }
}
\ No newline at end of file
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册