工作学习总结-angular中的安全导航符?.和ts中的非空断言操作符!.

我们先看一行代码:

  <img-loader [src]="pictureDatas[0]?.pictureUrl" useImg [spinner]="true"></img-loader>

其中 [src]=“pictureDatas[0]?.pictureUrl” 为什么这样写呢?这样写有什么作用的呢?我们先看一个概念—安全导航符。
安全导航符----?. 是一种流畅而便利的方式,用来保护出现在属性路径中 null 和 undefined 值。
pictureDatas[0]?.pictureUrl----如果pictureDatas[0]有值,就会取pictureDatas[0]中pictureUrl。如果pictureDatas[0]没有值,页面渲染加载的时候也不会报错。
如果pictureDatas[0]为null或者为undefined,页面都会报错。但是使用安全导航符就不会出现这个问题了,只是页面不会加载这个数据。
这个感觉还不错,可以用起来。

最后再加一个TypeScript的非空断言操作符!.

非空断言操作符
在上下文中当类型检查器无法断定类型时,一个新的后缀表达式操作符!可以用于断言操作对象是非null和非undefined类型的。具体而言,运算x!产生一个不包含null和undefined的x的值。断言的形式类似于x和x as T,!非空断言操作符会从编译成的JavaScript代码中移除。

  // 使用--strictNullChecks参数进行编译
    function validateEntity(e?: Entity) {
        // 如果e是null或者无效的实体,就会抛出异常
    }
    
    function processEntity(e?: Entity) {
        validateEntity(e);
        let s = e!.name;  // 断言e是非空并访问name属性
    }

兼容性
这些新特性是经过设计的,使得它们能够在严格空检查模式和常规类型检查模式下都能够使用。尤其是在常规类型检查模式中,null和undefined类型会自动从联合类型中删除(因为它们是其它所有类型的子类型),!非空断言表达式操作符也被允许使用但是没有任何作用。因此,声明文件使用null和undefined敏感类型更新后,在常规类型模式中仍然是可以向后兼容使用的。

在实际应用中,严格空检查模式要求编译的所有文件都是null和undefined敏感类型。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值