TypeScript又出新关键字了?|世界观焦点
TypeScript 5.2将引入一个新的关键字:using
。当它离开作用域时,你可以用Symbol.dispose
函数来处置任何东西。
{ const getResource = () => { return { [Symbol.dispose]: () => { console.log("Hooray!") } } } using resource = getResource();} // "Hooray!" logged to console
这是基于TC39提议,该提议最近达到了第三阶段,表明它即将进入JavaScript。
(资料图)
using
将对管理文件句柄、数据库连接等资源非常有用。
Symbol.dispose
是JavaScript中一个新的全局symbol
。任何具有分配给Symbol.dispose
函数的东西都将被视为"资源":也就是具有特定生命周期的对象。并且该资源可以使用using
关键字。
const resource = { [Symbol.dispose]: () => { console.log("Hooray!"); },};
await using你也可以使用Symbol.asyncDispose
和await
来处理那些需要异步处置的资源。
const getResource = () => ({ [Symbol.asyncDispose]: async () => { await someAsyncFunc(); },});{ await using resource = getResource();}
这将在继续之前等待Symbol.asyncDispose
函数。
这对数据库连接等资源来说很有用,你要确保在程序继续前关闭连接。
使用案例文件句柄通过节点中的文件处理程序访问文件系统,使用using
可能会容易得多。
不使用using
:
import { open } from "node:fs/promises";let filehandle;try { filehandle = await open("thefile.txt", "r");} finally { await filehandle?.close();}
使用using
:
import { open } from "node:fs/promises";const getFileHandle = async (path: string) => { const filehandle = await open(path, "r"); return { filehandle, [Symbol.asyncDispose]: async () => { await filehandle.close(); }, };};{ await using file = getFileHandle("thefile.txt"); // Do stuff with file.filehandle} // Automatically disposed!
数据库连接管理数据库连接是在C#中使用using
的一个常见用例。
不使用using
:
const connection = await getDb();try { // Do stuff with connection} finally { await connection.close();}
使用using
:
const getConnection = async () => { const connection = await getDb(); return { connection, [Symbol.asyncDispose]: async () => { await connection.close(); }, };};{ await using { connection } = getConnection(); // Do stuff with connection} // Automatically closed!
图片示例下图是上面示例的图片版本:
总结本文简要介绍了TypeScript5.2中引入的新关键字using
,它的出现可以很好的和Symbol.dispose
搭配使用。有了它我们便不需要在try…catch
语句中进行数据库的关闭,这对管理文件句柄、数据库连接等资源时非常有用。
以上就是本文的全部内容,如果对你有所启发,欢迎点赞、收藏、转发~
关键词:
您可能也感兴趣:
今日热点
为您推荐
被曝电动车14.99万起,“价格屠夫”回应了
东京股市三连跌
重邮校长寄语毕业生:在明星、偶像不断塌房的时代 青年人更应该有自己内心的坚守
排行
最近更新
- TypeScript又出新关键字了?|世界观焦点
- 热点评!天天热门:康缘药业:KYS202002A注射液获得美国FDA临...
- 环球快看点丨没有劳动合同都属于非法雇佣吗_天天观速讯
- 6月26日山东利华益集团油品报价上涨
- 常州市政府召开做强新能源汽车关键零部件产业推进会 全球看热讯
- 快消息!6月29-30日河池金城江区妇幼保健院九价hpv疫苗接种
- 全球通讯!全氟壬烯氧基苯磺酸钠(OBS)商品报价动态(2023-06-26)
- 中超控股:拟定增募资不超12.1亿元 用于航空发动机及燃气轮...
- Intel 4小核处理器跑分:6W功耗、竟超过65W i5-7400
- 多地房贷利率下调,首套最低降至3.6%,专家:降首付或更有效
- 热点聚焦:桓台县公安局荆家派出所开展6.26国际禁毒日宣传活动
- 20230626 准备再次进场做多-快消息
- 全球速讯:2023年徐州招生信息网中考成绩查询入口(附查询时间)
- 临清:应急演练进企业 筑牢安全生产线
- 2023奉化人才购房补贴怎么申请?_天天讯息
- 诗碧曼白发变黑骗局(诗碧曼白发转黑骗局)
- 天天报道:翱华股份(839659):拟10派0.7元,共派现365.19万元
- 世界消息!上海:推动数据要素产业高质量发展
- 焦点信息:中字头股票震荡走高,中国动力涨超7%
- 每日报道:徐静蕾晒近照带VR眼镜玩游戏 辟谣怀孕传闻称自己...
- 2023保定高校毕业生探亲交通补贴申领条件及流程
- 深圳市轨道五期顺利开工建设
- 诸葛科技:2023年宅地计划供应量严重“缩水” “高库存”城...
- 定向免费医学生在校期间有哪些待遇?
- 大行评级|美银证券上调中国燃气目标价至8.2港元 评级“跑输...
- 直击华尔街|过度扩张后的收缩 华尔街遭遇金融危机后最大裁员潮
- 浏阳高层次人才补贴政策
- 环球最新:清洁工嫌声音太吵关掉实验室超低温冰箱电源,导致2...
- 武汉紫阳街道:国际禁毒日宣传多点齐发,守护居民脚下“一方...
- 合肥市琥珀小学(西区) 学区范围 每日精选
今日要闻
- 西安廉租房申请网站 当前热文
- 今日聚焦!辽宁省2023二建成绩公布网站:辽宁人事考试网
- 焦点快播:从银行破产到AI狂潮,复盘2023上半年全球股市的投资主题
- 每日观察!中共中央纪委关于规范和明确党员受留党察看处分期满后恢复党员权利等工作程序的通知
- 从端午产业“三变”看消费市场活力
- 能吃能喝能上天,还能保存上千年!多地高校录取通知书上新_每日快播
- 【研报掘金】机构:氢能产业化进程加速 产业链股受关注|热头条
- 【学思想 强党性 重实践 建新功·学习进行时】推动广东农村生活污水治理工作再上新台阶|热门看点
- 2023年大学毕业后规划 2023年大学毕业生就业率_全球速讯
- 野心不小,日本解读武器出口原则,强词夺理只为打破限制