无法理解RxJS filter操作符中user => !!user的语法逻辑
解惑:
filter(user => !!user) 的作用 这个表达式的核心目的是过滤掉流中所有null或undefined的用户对象,确保后续的map操作只处理有效的Firebase用户实例,避免出现Cannot read property 'uid' of null这类运行时错误。
具体拆解:
- AngularFireAuth的
currentUserAuth$这个Observable会在用户状态变化时发射值:用户登录时发射Firebase User对象,未登录/登出时发射null。 !!user是把user转为布尔值:如果user是有效对象,!!user返回true;如果是null/undefined,返回false。- RxJS的
filter操作符会只保留返回true的流数据,所以这里会把null值全部过滤掉,只让有效用户对象进入后续的map步骤,安全地获取user.uid。
等价写法
你也可以写成更直观的形式,效果完全一致:
filter(user => user !== null && user !== undefined)
或者利用TypeScript的语法简化(可读性稍弱):
filter(user => user != null)
内容的提问来源于stack exchange,提问作者SHH
相关产品推荐
相关产品推荐

