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

理解 TypeScript 中的 “using” 關(guān)鍵詞

開(kāi)發(fā) 前端
今天解釋 using 關(guān)鍵詞在 TypeScript 中的工作原理,以及一個(gè)適用于 using 關(guān)鍵詞的常見(jiàn)使用場(chǎng)景。

using 關(guān)鍵詞用于代替 const 和let,用于定義一個(gè)可釋放的對(duì)象,即一個(gè)在使用后可以自我清理的對(duì)象。

然而,這個(gè)關(guān)鍵詞源自 C#,那么 TypeScript 只是復(fù)制 C# 嗎?

并不是,TypeScript 只是從 C# 中挑選出最優(yōu)秀的特性,以提升整體開(kāi)發(fā)者體驗(yàn)。

今天解釋 using 關(guān)鍵詞在 TypeScript 中的工作原理,以及一個(gè)適用于 using 關(guān)鍵詞的常見(jiàn)使用場(chǎng)景。

工作原理

using 關(guān)鍵詞可以像 const 和 let 一樣使用。

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

雖然這種賦值是可能的,但 using 關(guān)鍵詞應(yīng)該僅用于:

  • 使用 Symbol.dispose 關(guān)鍵詞的對(duì)象。
  • 返回使用 Symbol.dispose 關(guān)鍵詞的對(duì)象的函數(shù)。
  • 否則請(qǐng)使用 const 或 let。

Symbol.dispose 是 TypeScript 中的一個(gè)特殊函數(shù),用于將一個(gè)對(duì)象標(biāo)記為“資源”,即一個(gè)可釋放的對(duì)象。

以下是一個(gè) TypeScript 中的“資源”示例:

// 使用 Symbol.dispose 標(biāo)記為可釋放的對(duì)象
const disposableObject = {
  [Symbol.dispose]: () => {
    console.log("Dispose of me!");
  },
};

// 將對(duì)象用作資源
using resource = disposableObject;

我們可以通過(guò) await using 擴(kuò)展這一概念,這允許我們通過(guò)Symbol.asyncDispose函數(shù)異步釋放資源:

const getResource = () => ({
  [Symbol.asyncDispose]: async () => {
    await someAsyncFunc();
  },
});

{
  await using resource = getResource();
}

常見(jiàn)使用場(chǎng)景 —— 數(shù)據(jù)庫(kù)連接

數(shù)據(jù)庫(kù)連接可能是 using 的最常見(jiàn)使用場(chǎng)景。

原因很簡(jiǎn)單,你不需要在代碼中手動(dòng)關(guān)閉數(shù)據(jù)庫(kù)連接,讓 Symbol.asyncDispose 函數(shù)為你處理這個(gè)問(wèn)題。

以下是 TotalTypeScript 中的一些代碼片段,完美展示了這一點(diǎn)。

不使用 using:?

const connection = await getDb();

try {
  // 使用連接進(jìn)行操作
} 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 進(jìn)行操作

} // 自動(dòng)關(guān)閉!

想象一下,現(xiàn)在你可以擁有的這種安心感。

數(shù)據(jù)庫(kù)連接的關(guān)閉現(xiàn)在通過(guò) Symbol.asyncDispose 和 using 關(guān)鍵詞自動(dòng)且負(fù)責(zé)任地處理。

結(jié)論

using 關(guān)鍵詞用于定義“資源”,這些資源是包含 Symbol.dispose 函數(shù)的可釋放對(duì)象。

using 關(guān)鍵詞的加入將消除大量意外的 bug,并將開(kāi)發(fā)者體驗(yàn)提升十倍。

責(zé)任編輯:姜華 來(lái)源: 大遷世界
相關(guān)推薦

2011-06-14 10:01:03

長(zhǎng)尾關(guān)鍵詞

2023-06-19 09:16:41

CSSstep函數(shù)

2011-06-20 14:32:59

關(guān)鍵詞

2011-06-07 18:45:41

關(guān)鍵詞

2011-06-14 19:11:38

關(guān)鍵詞

2013-08-26 15:43:40

AppStore關(guān)鍵詞開(kāi)發(fā)者應(yīng)用選取關(guān)鍵詞

2022-07-20 23:38:10

SDN網(wǎng)絡(luò)工程師網(wǎng)絡(luò)可編程性

2011-06-19 12:20:47

長(zhǎng)尾關(guān)鍵詞

2011-05-25 17:58:00

2019-12-22 13:48:26

退休科技行業(yè)大佬

2011-05-25 17:38:56

關(guān)鍵詞

2011-07-12 18:26:42

關(guān)鍵詞

2011-06-10 14:13:24

關(guān)鍵詞

2011-06-20 15:24:43

關(guān)鍵詞

2011-06-10 13:34:17

關(guān)鍵詞

2011-07-06 18:18:01

關(guān)鍵詞密度

2012-03-20 22:19:16

Linux

2011-07-22 15:48:46

SEO

2014-09-12 14:03:45

操作系統(tǒng)

2009-11-03 09:02:59

Windows 7蘋(píng)果競(jìng)爭(zhēng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产欧美综合在线 | 精品国产一区二区三区av片 | 精品成人一区二区 | 成人高清在线视频 | 在线视频第一页 | 国产99精品 | 视频一区在线 | 免费观看黄色片视频 | gav成人免费播放视频 | 亚洲高清视频在线观看 | 欧美一区二区三区久久精品 | 亚洲成av人影片在线观看 | 国产精品欧美一区二区三区 | 中国黄色毛片视频 | 91美女在线 | 国产成人一区二区三区精 | 国内自拍真实伦在线观看 | 毛片一区二区三区 | 久久区二区 | 国产成人免费视频网站视频社区 | 男人的天堂在线视频 | 久久国产欧美一区二区三区精品 | 成人欧美一区二区三区色青冈 | 免费看国产a | 黄色一级大片在线免费看产 | 91精品观看 | 黄色欧美| 久久毛片网站 | 精品久久中文 | 日韩国产欧美在线观看 | 亚洲欧洲中文日韩 | 91精品国产综合久久久动漫日韩 | 天天插天天射天天干 | 亚洲一页| 97精品国产97久久久久久免费 | 99视频在线播放 | 麻豆changesxxx国产| 亚洲夜夜爽| 色秀网站 | 精品乱人伦一区二区三区 | 免费视频一区二区三区在线观看 |