Angular2模板具有安全的运算符(?.),但在component.ts(typescript 2.0)中.安全导航操作员(!)无法正常工作.
例:
这个TypeScript
if (a!.b!.c) { }
Run Code Online (Sandbox Code Playgroud)
编译到这个JavaScript
if (a.b.c) { }
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,我得到以下错误:
无法读取未定义的属性'b'
还有其他选择:
if (a && a.b && a.b.c) { }
Run Code Online (Sandbox Code Playgroud)
?
打字稿中是否有任何运算符使用Elvis Operator了angular2的similer,我的意思是说让我必须从对象获取密钥,如下所示:
this.myForm.name.first_name
Run Code Online (Sandbox Code Playgroud)
如果first_name不存在,那么它会抛出错误first_name of undefined,
是的,我可以使用这样Ternary operator的打字稿来解决这个错误
this.myForm.name ? this.myForm.name.first_name : ''
Run Code Online (Sandbox Code Playgroud)
但有时钥匙太长了,
所以Elvis Operator在打字稿中有任何类似angular2的操作符,这样我就可以这样使用了
this.myForm?.name?.first_name
Run Code Online (Sandbox Code Playgroud)