tgoop.com/frontendnoteschannel_ru/5202
Create:
Last Update:
Last Update:
В TypeScript теперь есть возможность использовать using для автоматического освобождения ресурсов, как только они выходят за пределы блока. Если объект реализует интерфейс Disposable с методом [Symbol.dispose](), то при выходе из блока объект автоматически «закрывается» и освобождается.
class FileHandler {
constructor(private file: string) {}
[Symbol.dispose]() {
console.log(`Закрываю файл: ${this.file}`);
}
}
function run() {
using file = new FileHandler("data.txt");
console.log("Работаем с файлом...");
}
run();
// Работаем с файлом...
// Закрываю файл: data.txt— В классе FileHandler реализован метод [Symbol.dispose]() для закрытия файла. Это ключевая часть, которая позволяет нам использовать ресурс, а затем автоматически его освобождать, как только мы выходим из блока.
— Внутри функции run мы используем ключевое слово using, которое автоматически вызывает метод [Symbol.dispose]() на объекте, когда он выходит из области видимости.
— Нет риска забыть вызвать .close(). Как это часто бывает, забытые вызовы могут привести к утечкам памяти и другим проблемам. С using этот момент полностью автоматизирован.
— Код становится более линейным и понятным. Сразу видно, что ресурс используется только в рамках определенного блока и автоматически освобождается.
— Это решение напоминает using в C# и with в Python.

