首页 > 解决方案 > 返回 false 而不是 undefined

问题描述

在 Angular 11 / Typescript 应用程序上,我有:

authorize(policy: Policy) : Observable<boolean> {

  switch(policy) { 

    case Policy.Admin: 

      return zip(this.authenticationService.isSignedIn(), this.user$).pipe(
        map(([isSignedIn, user]: [boolean, UserModel]) => 
          isSignedIn 
          && 
          user?.claims?.some((claim: Claim) => claim.value === 'Admin'))
      );

user是 类型Observable<UserModel>并且isSignedIn是 类型Observable<boolean, undefined>

当我构建应用程序时,我收到错误:

Type 'Observable<boolean | undefined>' is not assignable to type 'Observable<boolean>'

我不想返回未定义。我宁愿返回 false 而不是 undefined。

我怎样才能做到这一点?

标签: angulartypescriptrxjsobservableangular11

解决方案


用布尔值结束你的地图......

  const isSignedIn$ = this.authenticationService.isSignedIn();
  const user$ = this.user$;

  return zip(isSignedIn$, user$).pipe(
    map(([isSignedIn, user]: [boolean, UserModel]) => {
        const hasAdminRole = user?.claims?.some((claim: Claim) => claim.value === 'Admin');
        
        return !!(isSignedIn && hasAdminRole);
    })
  );

推荐阅读