using
TL;DR
using
による変数宣言が導入された。
スコープ外になる前にリソースの解放が行われる。
DBコネクション、ファイル読み込みなど、外部リソースの解放をハンドリングできるようになった。
Example - sync
従来のリソース解放の例
const db = new DB();
try {
db.query("SELECT ...");
} finally {
db.close();
}
usingを関数で使用した例
function createDB() {
const db = new DB();
return {
db,
[Symbol.dispose]: () => db.close(),
};
}
usingをクラスで使用した例
class DBConnection {
#db = new DB();
[Symbol.dispose]: () => {
this.#db.close();
}
}
Example - async
function createDB() {
const db = new DB();
return {
db,
[Symbol.asyncDispose]: async () => db.close(),
};
}
class DBConnection {
#db = new DB();
async [Symbol.asyncDispose]() {
this.#db.close();
}
}
最終更新