Optional Chaining特性进入Stage 3,TypeScript跟进
TypeScript 项目开发团队负责人 Ryan Cavanaugh 最近重新打开了多年前的一个 issue ,以庆祝 TypeScript 的 Optional Chaining(自判断属性链)特性进入第三阶状态(Stage 3)。
其实是 JavaScript 标准 TC39 将该特性草案演进到了 Stage 3:
提案地址
https://tc39.es/proposal-optional-chaining
就像 Ryan 说的,Optional Chaining 特性主要用于保护出现在属性路径中 null 和 undefined 值,像 C# 等语言中已经有用于访问属性链的语法糖,可以在对象层次结构中的任何地方处理遇到的 null 和 undefined 情况,使它可以正常执行,而不会抛出错误。
具体来讲,在向树状结构深处进行属性值访问时,通常需要检查中间节点是否存在:
var street = user.address && user.address.street;
许多 API 返回一个对象或 null/undefined,并且可能只想在结果不为 null 时从结果中提取属性:
var fooInput = myForm.querySelector('input[name=foo]')
var fooValue = fooInput ? fooInput.value : undefined
Optional Chaining 运算符允许开发人员直接用简单的方式处理这种情况,而不用进行重复性操作,或者使用临时变量分配中间结果:
var street = user.address?.street
var fooValue = myForm.querySelector('input[name=foo]')?.value
因为是保护访问属性链时的 null 与 undefined,所以 Optional Chaining 运算符也叫做“安全导航运算符”,TC39 标准中给出的该运算符是“?.”,它的语法可以适用于三种场景:
obj?.prop // 自判断静态属性访问
obj?.[expr] // 自判断动态访问
func?.(...args) // 自判断函数或方法调用
进入 Stage 3 的提案,也就意味着该提案基本已经完成,目前处在 RC 阶段,接下来就是针对一些社区反馈的问题进行跟进,之后正式发布该特性,预计 TypeScript 3.7 中将正式引入 Optional Chaining。
关于 Optional Chaining 的更多内容,查看
https://github.com/tc39/proposal-optional-chaining
开源中国征稿啦!
开源中国 www.oschina.net 是目前备受关注、具有强大影响力的开源技术社区,拥有超过 400 万的开源技术精英。我们传播开源的理念,推广开源项目,为 IT 开发者提供一个发现、使用、并交流开源技术的平台。
现在我们开始对外征稿啦!如果你有优秀的技术文章想要分享,热点的行业资讯需要报道等等,欢迎联系开源中国进行投稿。投稿详情及联系方式请参见:我要投稿
- TypeScript 1.5正式发布,此版本是Visual Studio 2015更新的一部分,支持大量ES6新特性
- 【学习笔记】熟悉TypeScript的数组操作,持续补充跟进!
- Typescript(1) 参数新特性
- TypeScript 学习笔记3: ECMAScript 2015 的新特性
- TypeScript入门知识一(字符串特性)
- TypeScript 学习四 面向对象的特性,泛型,接口,模块,类型定义文件*.d.ts
- Qbao Network 1周年庆活动跟进—进入锦鲤池的幸运名单
- TypeScript入门-6.字符串特性
- Typescript的参数新特性
- TypeScript入门-7.函数特性-不定参数
- python小白入门教程——TypeScript的语言特性
- TypeScript 2.0 RC版的新特性
- Typescript特性
- 微软推出 VS Code 新特性,为 TypeScript 和 JavaScript 用户提供 AI 辅助开发功能
- 发现TypeScript中同名interface接口会自动合并的特性
- typescript的高级特性(待补充)
- TypeScript入门知识三(面向对象特性)
- typescript的基础知识和特性!
- Javascript面向对象详解(第一部分,后面的高级特性陆续跟进中,敬请关注)
- typescript入门,typescript特性