让我们假设我想使用TypeScript在Angular应用程序中从路由中获取“ id”参数。
我可以做这样的事情:this!.route!.snapshot!.parent!.paramMap.get('id')
但是,如果我的断言是错误的,并且链的一部分返回null
,那么这将在运行时引发异常。
那么做这样的事情有意义吗?
this!.route!.snapshot!.parent!.paramMap.get('id') ? this!.route!.snapshot!.parent!.paramMap.get('id') : '-1'
还是总是返回第一个操作数(如果为空,则失败)?
答案 0 :(得分:0)
不要忘记TS将被编译为JS,并且在JS中不存在非null断言。
因此,您有两种解决方案:
测试每个步骤
x = this && this.route && this.route.snapshot && ... || '-1'
使用try catch块
try {
x = this.route.snapshot.parent.paramMap.get('id');
} catch(error) {
x = '-1';
}