@difizen/mana-common
Version:
42 lines (37 loc) • 791 B
text/typescript
import { noop } from './utils';
export type Disposable = {
disposed?: boolean | undefined;
/**
* Dispose this object.
*/
dispose: () => void;
};
export namespace Disposable {
export function is(arg: any): arg is Disposable {
return (
!!arg &&
typeof arg === 'object' &&
'dispose' in arg &&
typeof arg.dispose === 'function'
);
}
export function create(func: () => void): Disposable {
return {
dispose: func,
};
}
export const NONE = create(noop);
}
export interface Disposed {
disposed: boolean;
}
export namespace Disposed {
export function is(arg: any): arg is Disposed {
return (
!!arg &&
typeof arg === 'object' &&
'disposed' in arg &&
typeof arg.disposed === 'boolean'
);
}
}