09.05.2025, Ссылка на новость

Resource Management Unlimited Power

В стандарте ECMAScript появится явное управление ресурсами – более явный подход для работы с дескрипторами файлов, соединениями и любыми объектами, реализующими [Symbol.dispose]() или [Symbol.asyncDispose](). Для удобства работы с такими ресурсами появятся новые ключевые слова – using и await using, которые были добавлены в TypeScript 5.2.

Ключевое слово using вызывает [Symbol.dispose]() синхронно при выходе из блока, для await using схожая логика, за тем отличием, что в [Symbol.asyncDispose]() можно написать асихнронную логику.

Дополнительно к ключевым словам и специальным символам были добавлены новые классы – DisposableStack и AsyncDisposableStack, которые необходимы для агрегации ресурсов. Классы для агрегации обеспечивают более широкий функционал и позволяют описать поведение для не-disposable ресурсов, добавить обработку в конце всех dispose и явно вызвать очистку ресурсов.

Новую фичу обсуждали на прошедшем meeting of Ecma TC39 и её перевод в Stage 4, а ещё она стала доступна с Хромиума 134.