Disposable Namespace

    Package: @esfx/disposable

    Indicates an object that has resources that can be explicitly disposed.

    Functions

    create(dispose)

    Creates a Disposable wrapper around a callback used to dispose of a resource.

    NOTE: This is not spec-compliant and will not be standardized. It is preferred to use a DisposableStack or to implement Disposable.dispose yourself instead.

    Declaration
    function create(dispose: () => void): Disposable;
    Parameters
    dispose
    () => void

    Returns
    Disposable

    hasInstance(value)

    Determines whether a value is Disposable.

    NOTE: This is not spec-compliant and will not be standardized.

    Declaration
    function hasInstance(value: unknown): value is Disposable;
    Parameters
    value
    unknown

    Returns
    value is Disposable

    scope()

    Emulate using using for..of.

    NOTE: This is not spec-compliant and will not be standardized.

    Declaration
    function scope(): Generator<DisposableScope, void, undefined>;
    Returns
    Generator<DisposableScope, void, undefined>

    Examples
    // with `using` (proposed)
    {
      ...
      using x = expr, y = expr;
      ...
    }
    
    // with `Disposable.scope()`:
    for (const { using, fail } of Disposable.scope()) {
      try {
        ...
        const x = using(expr), y = using(expr);
        ...
      }
      catch (e) {
        fail(e);
      }
    }
    

    usingEach(iterable)

    Yields each disposable in the iterable, disposing it when the generator resumes.

    This emulates for (using x of expr).

    NOTE: This is not spec-compliant and will not be standardized.

    Declaration
    function usingEach(iterable: Iterable<Disposable | null | undefined>): Generator<Disposable | null | undefined, void, unknown>;
    Parameters
    iterable
    Iterable<Disposable | null | undefined>

    Returns
    Generator<Disposable | null | undefined, void, unknown>

    Examples
    // with `using` (proposed)
    for (using x of expr) {
      ...
    }
    
    // with `Disposable.usingEach()`:
    for (const x of Disposable.usingEach(expr)) {
      ...
    }
    

    Variables

    dispose

    A well-known symbol used to define an explicit resource disposal method on an object.

    NOTE: Uses Symbol.dispose if present.

    Declaration
    dispose: DisposeSymbol
    Generated by DocFX