在打字稿中替换Angular2的Elvis运算符

帕迪普·贾恩(Pardeep Jain)

打字稿中是否有任何运算符可以用来Elvis Operator模仿angular2,我的意思是说,假设我必须从这样的对象获取密钥:

this.myForm.name.first_name

如果first_name不存在,那么它将抛出错误first_name of undefined

是的,我可以使用这样Ternary operator的打字稿来处理此错误

this.myForm.name ? this.myForm.name.first_name : ''

但有时密钥变得太长,

所以Elvis Operator在打字稿中有像angular2这样运算符吗,这样我就可以这样使用

this.myForm?.name?.first_name
力量

2019年12月更新:TypeScript 3.7引入了Optional Chaining,它等效于其他语言中已知的安全导航运算符。ECMAScript建议的可选链接已进入第4阶段,因此将成为ES2020规范的一部分。有关更多信息,请参见mdn:可选链接


2017年7月更新:正如JGFMK在评论中指出的那样,有一个ECMAScript提案,称为JavaScript可选如果/当提案到达阶段4时,它将被添加到语言规范中。


据我所知,TypeScript中既没有安全的导航功能,也没有elvis运算符,据我所知,两者也不具有可比性。

有关参考,请参见“建议”中的功能要求:“安全导航操作员”,即x?.y以下是不执行此操作的说明(在我看来,这是一个正当理由):

现在关闭它。由于实际上没有任何特定于TypeScript的东西需要在表达式级别进行此操作,因此这种较大的运算符更改应在ES规范委员会而不是在这里进行。

重新评估这一点的通用绊脚石将是进入下一阶段的具体ES提案,或者是ES委员会关于该功能不会长期存在的普遍共识(以便我们可以定义自己的语义并合理地确保他们会“赢”)。

这种表示法的替代方法是使用逻辑AND运算符,try / catch或帮助函数getSafe(() => this.myForm.name.first_name),如本博文中所述

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular2,子属性和Elvis运算符

来自分类Dev

Elvis运算符在angular2中具有带连字符的属性

来自分类Dev

在Angular2中正确使用Elvis运算符以获取Dart组件的视图

来自分类Dev

Angular 2 * ngIf与Elvis运算符在* ngFor中

来自分类Dev

打字稿中的 Typeof 运算符

来自分类Dev

在打字稿中是否存在布尔列表的“全部”或“任何”运算符

来自分类Dev

Angular2在带正斜杠的对象键上使用Elvis运算符

来自分类Dev

Angular2 RC5和Elvis运算符

来自分类Dev

如何使Angular2在打字稿中使用eclipse

来自分类Dev

打字稿中的as运算符的作用是什么?

来自分类Dev

打字稿中的散布运算符剥离类型定义

来自分类Dev

!对象方法后在打字稿中使用运算符

来自分类Dev

如何在打字稿Angular2中将JSON对象与变量绑定?

来自分类Dev

打字稿和运算符

来自分类Dev

Angular2 =>运算符

来自分类Dev

为什么无效的合并运算符不能用作打字稿中的打字机?

来自分类Dev

Groovy中GString中的Elvis运算符

来自分类Dev

此代码段中的打字稿解构运算符有什么问题?

来自分类Dev

带有扩展运算符的打字稿昆虫

来自分类Dev

使用条件运算符的Angular2绑定

来自分类Dev

在Angular2中实现动态路由(打字稿)

来自分类Dev

使用Gulp在Angular2中编译打字稿文件

来自分类Dev

在 Angular2 打字稿类中找不到模块

来自分类Dev

Angular 2中的新换行符打字稿代码

来自分类Dev

Angular2 打字稿语法

来自分类Dev

具有* ngFor的Elvis运算符

来自分类Dev

如何在打字稿中实现同步功能(Angular)

来自分类Dev

Angular 7 在打字稿中隐藏引导模式

来自分类Dev

c中的位移运算符替换