首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型'boolean‘不能指定为键入'Observable<boolean>’

类型'boolean‘不能指定为键入'Observable<boolean>’
EN

Stack Overflow用户
提问于 2017-02-11 16:37:42
回答 3查看 98.1K关注 0票数 35

我有密码

代码语言:javascript
复制
method(): Observable<boolean> {
    return this._http.get('sessionId=' + sessionId).map(res=> {
      if (res.status === "success") {
        return true;
      }
      return false;
    });
}

但是当sessionId是“”时,它会抛出一个异常,控制台记录401错误

我补充说,如果在这个方法中:

代码语言:javascript
复制
method(): Observable<boolean> {
    if (sessionId === '')
      return false;
    return this._http.get('sessionId=' + sessionId).map(res=> {
      if (res.status === "success") {
        return true;
      }
      return false;
    });
  }

但现在我发现了一个错误:

类型'boolean‘是不能分配的类型’可观察‘。

我该怎么解决呢?

如果我添加Observable<boolean> | boolean,那么我得到的错误是

属性“map”不存在于“布尔值可观测”类型上。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-11 16:39:26

代码语言:javascript
复制
method(): Observable<boolean> {
    if (sessionId === '')
      return false; // <<< obviously not an observable

这应该能做你想做的

代码语言:javascript
复制
import { of, Observable } from 'rxjs';


method(): Observable<boolean> {
    if (sessionId === '')
      return of(false);
    }
    return this._http.get('sessionId=' + sessionId).map(res=> {
      if (res.status === "success") {
        return true;
      }
      return false;
    });
  }
票数 55
EN

Stack Overflow用户

发布于 2018-06-11 18:03:41

除了接受的答案之外,我还要添加RxJs v6,在这种情况下,Observable上不存在of,但是可以直接从rxjs导入

代码语言:javascript
复制
import { Observable, of as observableOf } from 'rxjs'; // since RxJs 6

method(): Observable<boolean> {
  if (sessionId === '')
    return observableOf(false);
  }
  // ...
}
票数 14
EN

Stack Overflow用户

发布于 2021-08-29 16:26:49

对于具有严格类型设置的角度用户,所有其他类型似乎都正常(不是我测试了所有类型.但是number和自定义接口(例如,不需要添加类型声明)

使用布尔类型,这将导致错误:

代码语言:javascript
复制
_isBoolean$: BehaviorSubject<boolean> = new BehaviorSubject(false);

改为:

代码语言:javascript
复制
_isBoolean$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);

这也管用..。

代码语言:javascript
复制
_isBoolean$ = new BehaviorSubject<boolean>(false);
_isBoolean$ = new BehaviorSubject(false);

但是,很清楚,它是removes...the...strict...typing的;)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42178383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档