打字稿中是否有任何运算符可以用来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] 删除。
我来说两句