成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

理解 TypeScript 中的 “using” 關鍵詞

開發 前端
今天解釋 using 關鍵詞在 TypeScript 中的工作原理,以及一個適用于 using 關鍵詞的常見使用場景。

using 關鍵詞用于代替 const 和let,用于定義一個可釋放的對象,即一個在使用后可以自我清理的對象。

然而,這個關鍵詞源自 C#,那么 TypeScript 只是復制 C# 嗎?

并不是,TypeScript 只是從 C# 中挑選出最優秀的特性,以提升整體開發者體驗。

今天解釋 using 關鍵詞在 TypeScript 中的工作原理,以及一個適用于 using 關鍵詞的常見使用場景。

工作原理

using 關鍵詞可以像 const 和 let 一樣使用。

// 注意:必須賦值某個值或返回一個值的函數。
using x = getX();

雖然這種賦值是可能的,但 using 關鍵詞應該僅用于:

  • 使用 Symbol.dispose 關鍵詞的對象。
  • 返回使用 Symbol.dispose 關鍵詞的對象的函數。
  • 否則請使用 const 或 let。

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,并將開發者體驗提升十倍。

責任編輯:姜華 來源: 大遷世界
相關推薦

2011-06-14 10:01:03

長尾關鍵詞

2023-06-19 09:16:41

CSSstep函數

2011-06-20 14:32:59

關鍵詞

2011-06-07 18:45:41

關鍵詞

2011-06-14 19:11:38

關鍵詞

2013-08-26 15:43:40

AppStore關鍵詞開發者應用選取關鍵詞

2022-07-20 23:38:10

SDN網絡工程師網絡可編程性

2011-06-19 12:20:47

長尾關鍵詞

2011-05-25 17:58:00

2019-12-22 13:48:26

退休科技行業大佬

2011-05-25 17:38:56

關鍵詞

2011-07-12 18:26:42

關鍵詞

2011-06-10 14:13:24

關鍵詞

2011-06-20 15:24:43

關鍵詞

2011-06-10 13:34:17

關鍵詞

2011-07-06 18:18:01

關鍵詞密度

2012-03-20 22:19:16

Linux

2009-11-03 09:02:59

Windows 7蘋果競爭

2011-07-22 15:48:46

SEO

2014-09-12 14:03:45

操作系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区三区在线免费观看 | 欧美a级成人淫片免费看 | 天天操夜夜艹 | 香蕉超碰 | 免费一级做a爰片久久毛片潮喷 | 国产精品久久久久久久久久 | 国产激情视频在线观看 | 免费在线国产视频 | 国内精品伊人久久久久网站 | 伊人网在线播放 | 亚洲福利在线观看 | 玖玖国产 | 久久99精品久久久久 | 久久久99国产精品免费 | 国产特级毛片 | 有码在线| 精品视频久久久久久 | 精品区 | 成人亚洲视频 | 欧美日韩国产综合在线 | 亚洲欧美国产精品一区二区 | 精品欧美黑人一区二区三区 | 视频三区 | 九九综合| 男人的天堂中文字幕 | 一级免费视频 | 国产精品美女久久久久aⅴ国产馆 | 欧美成人精品激情在线观看 | 欧美视频一区二区三区 | 福利视频一区二区 | 日韩一区二区三区视频 | 2021天天干夜夜爽 | 日韩一区不卡 | 国产精品久久久久久久免费观看 | 欧美婷婷 | 欧美一区二区三区在线观看视频 | 深夜福利影院 | 欧美中文字幕一区二区三区亚洲 | 国产精品99久久久久久宅男 | 九九精品影院 | 99re热精品视频 |