F
Frontend VK Hub
@frontendhubvk1.2K подп.
407просмотров
34.8%от подписчиков
24 марта 2026 г.
📷 ФотоScore: 448
using — JS умеет закрывать ресурсы сам Каждый раз, когда открываешь соединение, файл или WebSocket — где-то в коде появляется finally. Не потому что хочется, а потому что без него ресурс утечёт, если между открытием и закрытием бросит исключение. const conn = db.connect(); try { return conn.query('SELECT ...'); } finally { conn.close(); // без этого будет утечка при любой ошибке выше } ES2026 добавляет using. Работает как const, но при выходе из блока автоматически вызывает Symbol.dispose на объекте, даже если вылетело исключение. class DbConnection { Symbol.dispose { this.conn.close(); } } function processData() { using db = new DbConnection(); return db.query('SELECT ...'); // conn.close() вызовется здесь автоматически } Для асинхронных ресурсов — await using с Symbol.asyncDispose: async function writeLog() { await using handle = await openFile('log.txt'); await handle.write('done'); // файл закроется после строки выше, не нужен finally } Это удобно в тестах. Раньше mock-сервер или тестовое соединение закрывали в afterEach, и это отдельный блок, который легко забыть или написать неправильно. С using ресурс живёт ровно столько, сколько длится тест: test('sends request', async () => { await using server = createMockServer(); // server.close() сам вызовется в конце теста }); TypeScript поддерживает using с версии 5.2. Для браузеров нужен таргет ES2026 или полифил через Symbol.dispose. #frontendvk #javascript #typescript
407
просмотров
1539
символов
Нет
эмодзи
Да
медиа

Другие посты @frontendhubvk

Все посты канала →