typescript 中是否有任何运算符类似于 angular2 的 Elvis Operator
,我的意思是说假设我必须像这样从对象中获取密钥:
this.myForm.name.first_name
如果 first_name 不存在,那么它会抛出错误 first_name of undefined
,
是的,我可以使用 Ternary operator
这样的打字稿来处理这个错误
this.myForm.name ? this.myForm.name.first_name : ''
但有时按键会变得太长,
那么打字稿中是否有像 angular2 的 Elvis Operator
这样的运算符,这样我就可以像这样使用
this.myForm?.name?.first_name
原文由 Pardeep Jain 发布,翻译遵循 CC BY-SA 4.0 许可协议
2019 年 12 月更新:TypeScript 3.7 引入了可选链接,相当于其他语言中已知的安全导航运算符。 ECMAScript 提案 可选链 已进入第 4 阶段,因此将成为 ES2020 规范的一部分。请参阅 mdn:可选链接 以获取更多信息。
2017 年 7 月更新:正如 JGFMK 在评论中指出的那样,有一个名为 Optional Chaining for JavaScript 的 ECMAScript 提案。如果/当提案到达第 4 阶段时,它将被添加到语言规范中。
TypeScript 中既没有安全导航也没有 elvis 运算符,据我所知,也没有可比性。
有关参考,请参阅 建议中的功能请求:“安全导航运算符”,即 x?.y 。 不执行的解释 如下(我认为这是一个正当理由):
该表示法的替代方法是使用逻辑 AND 运算符、try/catch 或类似
getSafe(() => this.myForm.name.first_name)
辅助函数,如 本文 所述。