ts-raii-scope
Version:
TypeScript RAII proof of concept
13 lines (12 loc) • 793 B
TypeScript
import { IDisposable, IExternalDisposeCallback } from '../types/disposable';
export declare class RaiiScope implements IDisposable {
static doInside<TArgs extends IDisposable[], TResult>(resources: TArgs, action: (...args: TArgs) => TResult): TResult;
static doInsideAsync<TArgs extends IDisposable[], TResult>(resources: TArgs, action: (...args: IDisposable[]) => Promise<TResult>): Promise<TResult>;
protected _stack: IDisposable[];
protected _isDisposed: boolean | undefined;
constructor(...args: IDisposable[]);
push<T extends IDisposable | any>(resource: T, disposeCallback?: IExternalDisposeCallback<T>): T;
dispose(): Promise<void> | void;
protected disposeImpl(): Promise<void> | void;
protected pushUnique<T extends IDisposable>(resource: T): T;
}