The Symbol.dispose static data property represents the well-known symbol Symbol.dispose. The using declaration looks up this symbol on the variable initializer for the method to call when the variable goes out of scope.
The well-known symbol Symbol.dispose.Property attributes of Symbol.disposeWritable no Enumerable no Configurable no
An object is disposable if it has the [Symbol.dispose]() method. The method is expected to have the following semantics:
This method should not return a promise, as promises returned by [Symbol.dispose]() are not awaited by await using. To declare async disposables, use Symbol.asyncDispose.
[Symbol.dispose] allows the creation of custom disposables. See the using reference for more information.
class Disposable {
constructor() {
this.disposed = false;
}
[Symbol.dispose]() {
this.disposed = true;
}
get isDisposed() {
return this.disposed;
}
}
const resource = new Disposable();
{
using resourceUsed = resource;
console.log(resource.isDisposed); // false
}
console.log(resource.isDisposed); // true