TypeScript 5.2 находится в пути, и мы уже можем получить представление о его будущих функциях в бета-версии, выпущенной 21 июля.

Одним из замечательных дополнений является ключевое слово using, которое позволяет автоматически очищать объекты, как только они выходят из текущей области использования. В основе этого механизма лежит новый глобальный символ Javascript Symbol.dispose.

Ресурс — объект с определенным временем жизни, в конце которого должна быть выполнена либо операция, зависящая от времени жизни, либо ссылка без сбора мусора (например, файл ручка, гнездо и т. д.) должны быть закрыты или освобождены. — github.com/tc39/proposal-explicit-resource-management#definitions

Когда объекту назначается функция, связанная с Symbol.dispose, он помечается как ресурс, что означает, что он имеет определенное время жизни. Затем вступает в действие ключевое слово using, чтобы облегчить эффективный контроль над этими «ресурсами», обеспечивая беспрепятственную очистку по мере того, как они перестают использоваться.

Если у вас есть ресурсы, которые необходимо очищать асинхронно, TypeScript представляет Symbol.asyncDispose, который гармонично работает с синтаксисом await using.

Вот простой пример:

Функция getResource возвращает функцию Symbol.dispose, которая делает ее ресурсом с определенным временем жизни. Мы используем ключевое слово using для получения ресурса путем привязки его к нашей переменной resource. Как только resource покидает текущую область, запускается определенная функция dispose, которая обрабатывает работу по очистке. В нашем случае в консоль пишется «Clean up done».

В TypeScript 5.2 добавлена ​​поддержка новой функции явного управления ресурсами в ECMAScript. — devblogs.microsoft.com

Наличие этой новой функции будет чрезвычайно полезно для более эффективной «очистки» после создания объектов.