我正在尝试理解一个Ionic/Angular项目中的应用程序,其中有一个过滤表达式:
private userId$ = this.authService.currentUserAuth$.pipe(
filter(user => !!user),
map((user) => user.uid)
);
authservice
是AngularFireAuth
类型,user
是firebase.user
类型。我无法理解的是过滤表达式user => !!user
。我发现!!
会强制变量为布尔值,但在上下文中对我来说没有任何意义。有人能帮忙吗?
1条答案
按热度按时间c9x0cxw01#
filter
接受返回布尔值的 predicate 函数。user => !!user
在任何JavaScript上下文中都表示“给定参数user
(这是您的rxjspipe
中的值),这是真实类型吗?”其中“真实”表示不是undefined
、null
、false
、0
的内容(任何类型)、NaN
或空字符串。如果
user
是这些值中的任何一个(可能是来自auth服务的null
或undefined
),它将不会执行链中的下一步,您的案例将尝试从map
中提取uuid