“ !! user”的作用是什么?这条线的结果是什么?

时间:2019-06-19 19:00:59

标签: javascript angular rxjs

我想在我的应用程序中加入角度路线守卫。我找到了这段代码,但不明白为什么我们将user映射到!!usermap(user => !!user)行的目的是什么?

canActivate(
    next: ActivatedRouteSnapshot,
    state: RouterStateSnapshot): Observable<boolean> {

      return this.auth.user.pipe()
           take(1),
           map(user => !!user),
           tap(loggedIn => {
             if (!loggedIn) {
               console.log('access denied')
               this.router.navigate(['/login']);
             }
         })
    )

1 个答案:

答案 0 :(得分:3)

!!是将某些内容转换为布尔值的常用方法。

通过在!函数中两次应用NOT运算符(map()),它将用户映射到一个布尔值,然后将该布尔值用作loggedIn }}功能。

很可能该用户应该是具有userdata(具有真实值)的对象。

我还假设,如果您尚未登录,则用户将是tap()null(值是虚假的)。