当前位置:首页 > 科技  > 软件

理解 TypeScript 中的 “using” 关键词

来源: 责编: 时间:2024-06-14 08:52:49 272观看
导读using 关键词用于代替 const 和let,用于定义一个可释放的对象,即一个在使用后可以自我清理的对象。然而,这个关键词源自 C#,那么 TypeScript 只是复制 C# 吗?并不是,TypeScript 只是从 C# 中挑选出最优秀的特性,以提升整体开

Wto28资讯网——每日最新资讯28at.com

using 关键词用于代替 const 和let,用于定义一个可释放的对象,即一个在使用后可以自我清理的对象。Wto28资讯网——每日最新资讯28at.com

然而,这个关键词源自 C#,那么 TypeScript 只是复制 C# 吗?Wto28资讯网——每日最新资讯28at.com

并不是,TypeScript 只是从 C# 中挑选出最优秀的特性,以提升整体开发者体验。Wto28资讯网——每日最新资讯28at.com

今天解释 using 关键词在 TypeScript 中的工作原理,以及一个适用于 using 关键词的常见使用场景。Wto28资讯网——每日最新资讯28at.com

工作原理

using 关键词可以像 const 和 let 一样使用。Wto28资讯网——每日最新资讯28at.com

// 注意:必须赋值某个值或返回一个值的函数。using x = getX();

虽然这种赋值是可能的,但 using 关键词应该仅用于:Wto28资讯网——每日最新资讯28at.com

  • 使用 Symbol.dispose 关键词的对象。
  • 返回使用 Symbol.dispose 关键词的对象的函数。
  • 否则请使用 const 或 let。

Symbol.dispose 是 TypeScript 中的一个特殊函数,用于将一个对象标记为“资源”,即一个可释放的对象。Wto28资讯网——每日最新资讯28at.com

以下是一个 TypeScript 中的“资源”示例:Wto28资讯网——每日最新资讯28at.com

// 使用 Symbol.dispose 标记为可释放的对象const disposableObject = {  [Symbol.dispose]: () => {    console.log("Dispose of me!");  },};// 将对象用作资源using resource = disposableObject;

我们可以通过 await using 扩展这一概念,这允许我们通过Symbol.asyncDispose函数异步释放资源:Wto28资讯网——每日最新资讯28at.com

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

常见使用场景 —— 数据库连接

数据库连接可能是 using 的最常见使用场景。Wto28资讯网——每日最新资讯28at.com

原因很简单,你不需要在代码中手动关闭数据库连接,让 Symbol.asyncDispose 函数为你处理这个问题。Wto28资讯网——每日最新资讯28at.com

以下是 TotalTypeScript 中的一些代码片段,完美展示了这一点。Wto28资讯网——每日最新资讯28at.com

不使用 using:❌Wto28资讯网——每日最新资讯28at.com

const connection = await getDb();try {  // 使用连接进行操作} finally {  await connection.close();}

使用 using:✅Wto28资讯网——每日最新资讯28at.com

const getConnection = async () => {  const connection = await getDb();  return {    connection,    [Symbol.asyncDispose]: async () => {      await connection.close();    },  };};{  await using db = await getConnection();  // 使用 db.connection 进行操作} // 自动关闭!

想象一下,现在你可以拥有的这种安心感。Wto28资讯网——每日最新资讯28at.com

数据库连接的关闭现在通过 Symbol.asyncDispose 和 using 关键词自动且负责任地处理。Wto28资讯网——每日最新资讯28at.com

结论

using 关键词用于定义“资源”,这些资源是包含 Symbol.dispose 函数的可释放对象。Wto28资讯网——每日最新资讯28at.com

using 关键词的加入将消除大量意外的 bug,并将开发者体验提升十倍。Wto28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-93699-0.html理解 TypeScript 中的 “using” 关键词

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Go必知必会:数组和切片详解

下一篇: 2024年,一大波 Web 新功能来袭!

标签:
  • 热门焦点
  • 8月总票房已突破10亿!《封神》第一:口碑已经成了

    8月5日消息,据灯塔专业版数据,截至8月5日9时35分,8月总票房(含预售)已突破10亿。其中,《封神》以大比分的优势领先。根据官方消息,目前该片总票房已经超过14.
  • 学习JavaScript的10个理由...

    作者 | Simplilearn编译 | 王瑞平当你决心学习一门语言的时候,很难选择到底应该学习哪一门,常用的语言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • 从零到英雄:高并发与性能优化的神奇之旅

    作者 | 波哥审校 | 重楼作为公司的架构师或者程序员,你是否曾经为公司的系统在面对高并发和性能瓶颈时感到手足无措或者焦头烂额呢?笔者在出道那会为此是吃尽了苦头的,不过也得
  • 共享单车的故事讲到哪了?

    来源丨海克财经与共享充电宝相差不多,共享单车已很久没有被国内热点新闻关照到了。除了一再涨价和用户直呼用不起了。近日多家媒体再发报道称,成都、天津、郑州等地多个共享单
  • 冯提莫签约抖音公会 前“斗鱼一姐”消失在直播间

    来源:直播观察提起“冯提莫”这个名字,很多网友或许听过,但应该不记得她是哪位主播了。其实,作为曾经的“斗鱼一姐”,冯提莫在游戏直播的年代影响力不输于现
  • 2纳米决战2025

    集微网报道 从三强争霸到四雄逐鹿,2nm的厮杀声已然隐约传来。无论是老牌劲旅台积电、三星,还是誓言重回先进制程领先地位的英特尔,甚至初成立不久的新
  • 半导体需求下滑 三星电子DS业务部门今年营业亏损预计超10万亿韩元

    7月17日消息,据外媒报道,去年下半年开始的半导体需求下滑,影响到了三星电子、SK海力士、英特尔等诸多厂商,营收明显下滑,部分厂商甚至出现了亏损。作为
  • iQOO Neo8 Pro即将开售:到手价3099元起 安卓性能最强旗舰

    5月23日,iQOO如期举行了新品发布会,全新的iQOO Neo8系列也正式与大家见面,包含iQOO Neo8和iQOO Neo8 Pro两个版本,其中标准版搭载高通骁龙8+,而Pro版更
  • 回归OPPO两年,一加赢了销量,输了品牌

    成为OPPO旗下主打性能的先锋品牌后,一加屡创佳绩。今年618期间,一加手机全渠道销量同比增长362%,凭借一加 11、一加 Ace 2、一加 Ace 2V三款爆品,一加
Top