webentwicklung-frage-antwort-db.com.de

Typ 'boolean' kann nicht dem Typ 'Observable <boolean>' zugewiesen werden

Ich habe diesen Code

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

Aber wenn sessionId '' ist, wird eine Ausnahme ausgelöst und der Fehler 401 in der Konsole protokolliert

und ich füge hinzu, wenn in dieser Methode:

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

Aber jetzt bekomme ich einen Fehler:

Der Typ 'boolean' kann nicht dem Typ 'Observable' zugewiesen werden.

Wie kann ich das lösen?

Wenn ich Observable<boolean> | boolean Hinzufüge, erhalte ich den Fehler

Die Eigenschaft 'map' existiert nicht für den Typ 'boolean | Beobachtbar '.

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

Dies sollte tun, was Sie wollen

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;
    });
  }
26

Zusätzlich zur akzeptierten Antwort würde ich den RxJs v6-Fall hinzufügen, in dem of nicht auf Observable existiert, sondern direkt aus rxjs importiert werden könnte:

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

method(): Observable<boolean> {
  if (sessionId === '')
    return observableOf(false);
  }
  // ...
}
8
dhilt