32 lines
799 B
TypeScript
32 lines
799 B
TypeScript
/**
|
|
*
|
|
* A module containing miscellaneous types for resource management
|
|
*
|
|
* @packageDocumentation
|
|
* @module resource_safety
|
|
* @mergeTarget
|
|
*/
|
|
/**
|
|
* If you have a resource that you want typescript to enforce close is implemented
|
|
* and/or you want to use the below 'using' function, then implement this interface.
|
|
*
|
|
* @category System
|
|
*/
|
|
export interface ResourceSafe {
|
|
close(): void;
|
|
}
|
|
/**
|
|
* Use this function to create a resource in an async context. This will make sure the
|
|
* resources are cleaned up before returning.
|
|
*
|
|
* Example:
|
|
* ```
|
|
* await using(res = new SomeResource(), async (res) => {
|
|
* res.do_the_thing();
|
|
* });
|
|
* ```
|
|
*
|
|
* @category System
|
|
*/
|
|
export declare function using<T extends ResourceSafe>(resource: T, func: (resource: T) => void): Promise<void>;
|