using 關鍵詞用于代替 const 和let,用于定義一個可釋放的對象,即一個在使用后可以自我清理的對象。
然而,這個關鍵詞源自 C#,那么 TypeScript 只是復制 C# 嗎?
并不是,TypeScript 只是從 C# 中挑選出最優秀的特性,以提升整體開發者體驗。
今天解釋 using 關鍵詞在 TypeScript 中的工作原理,以及一個適用于 using 關鍵詞的常見使用場景。
using 關鍵詞可以像 const 和 let 一樣使用。
// 注意:必須賦值某個值或返回一個值的函數。using x = getX();
雖然這種賦值是可能的,但 using 關鍵詞應該僅用于:
Symbol.dispose 是 TypeScript 中的一個特殊函數,用于將一個對象標記為“資源”,即一個可釋放的對象。
以下是一個 TypeScript 中的“資源”示例:
// 使用 Symbol.dispose 標記為可釋放的對象const disposableObject = { [Symbol.dispose]: () => { console.log("Dispose of me!"); },};// 將對象用作資源using resource = disposableObject;
我們可以通過 await using 擴展這一概念,這允許我們通過Symbol.asyncDispose函數異步釋放資源:
const getResource = () => ({ [Symbol.asyncDispose]: async () => { await someAsyncFunc(); },});{ await using resource = getResource();}
數據庫連接可能是 using 的最常見使用場景。
原因很簡單,你不需要在代碼中手動關閉數據庫連接,讓 Symbol.asyncDispose 函數為你處理這個問題。
以下是 TotalTypeScript 中的一些代碼片段,完美展示了這一點。
不使用 using:?
const connection = await getDb();try { // 使用連接進行操作} finally { await connection.close();}
使用 using:?
const getConnection = async () => { const connection = await getDb(); return { connection, [Symbol.asyncDispose]: async () => { await connection.close(); }, };};{ await using db = await getConnection(); // 使用 db.connection 進行操作} // 自動關閉!
想象一下,現在你可以擁有的這種安心感。
數據庫連接的關閉現在通過 Symbol.asyncDispose 和 using 關鍵詞自動且負責任地處理。
using 關鍵詞用于定義“資源”,這些資源是包含 Symbol.dispose 函數的可釋放對象。
using 關鍵詞的加入將消除大量意外的 bug,并將開發者體驗提升十倍。
本文鏈接:http://www.tebozhan.com/showinfo-26-93699-0.html理解 TypeScript 中的 “using” 關鍵詞
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: Go必知必會:數組和切片詳解
下一篇: 2024年,一大波 Web 新功能來襲!