How to create an Observable of type boolean?

First the wrong code that will NOT compile at all

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

This will give an error:

Type 'boolean' is not assignable to type 'Observable'.

The reason is becuase

    method(): Observable<boolean> {
    if (sessionId === '')
      return false; // <<< obviously not an observable

The correct way to define the method

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

RxJs v6 case where of does not exist on Observable but could be imported directly from rxjs:

import { Observable, of as observableOf } from 'rxjs'; // since RxJs 6

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

How to create an Observable of type boolean?

What I need is someVariable$ to be false by default.

First, when I can not use “BehaviorSubject” for some reason – not so best way

someVariable$: Observable<boolean>;

The best-practice way

someVariable$ = new BehaviorSubject<boolean>(false);

Further Reading

https://stackoverflow.com/questions/42178383/type-boolean-is-not-assignable-to-type-observableboolean

RxHarun
Logo