angular - 返回 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。
我怎样才能做到这一点?
解决方案
用布尔值结束你的地图......
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);
})
);
推荐阅读
- php - 将数据从表传输到同一数据库中的另一个表
- python - 试图向 Django 脆皮表单输入字段添加属性
- swift - 如何在闭包中使用闭包,而不创建无限循环?
- c++ - std::enable_if 如何防止成员模板的声明?
- javascript - React Hook 在函数“onSubmit”中调用,该函数既不是 React 函数组件也不是自定义 React Hook 函数
- llvm - 为什么我不能在指令组合中使用虚拟寄存器变量?
- python-pptx - 在嵌套for循环的多个目录中迭代imagis,第n个循环重复前一个循环的最后一项 - Python
- c - 如何让程序在 C 中向自身发送 SIGINT?
- node.js - 如何用聚合的mongo减去2个具有相同goods_info.name的子文档
- c++ - 为什么 C++ 编译器内联字符串文字的一部分?