В грядущем typescript 5.2 собираются добавить очень интересную и полезную фичу using. Подобное уже реализовано в других языках: В C# это using, в Go - defer. В чем основная идея.
using позволяет автоматически освобождать ресурс (вызывать специальный метод для этого) после того, как покидает область видимости блока. Например у нас есть метод getResource у которого реализован метод [Symbol.dispose](). Тогда мы можем написать следующий код и метод Symbol.dispose будет выполнен автоматически в конце выполнения функции main, как если бы эта конструкций была бы завернута в блок try finally.
function getResource() {
return {
execute: () => console.log('execute'),
[Symbol.dispose]: () => console.log('dispose'),
};
}
/*
function main() {
const resource = getResource();
try {
resource.execute()
} finally {
resource[Symbol.dispose]();
}
}
*/
function main() {
const resource = using getResource();
resource.execute();
}
main();
Такое поведение может быть полезно в первую очередь в nodejs для работы например с базами данных, но я уверен что подобный синтаксический сахар может быть полезен много где. Для того чтобы посмотреть на более подробное обсуждение и реализацию функциональности можно пока посмотреть в pull-request https://github.com/microsoft/TypeScript/pull/54505 а сам typescript 5.2 обещается зарелизится 22 августа.