Тип "boolean" не присваивается типу " Observable "
у меня есть этот код
method(): Observable<boolean> {
return this._http.get('sessionId=' + sessionId).map(res=> {
if (res.status === "success") {
return true;
}
return false;
});
}
но когда sessionId
is " он выдает исключение и консоль регистрирует ошибку 401
и я добавляю, Если внутри этого метода:
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".
как я могу решить это?
если я добавить Observable<boolean> | boolean
затем я получаю ошибку, что
свойство 'map' не существует на введите 'boolean / Observable'.
3 ответов
method(): Observable<boolean> {
if (sessionId === '')
return false; // <<< obviously not an observable
Это должно делать то, что вы хотите
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, где of
не существует Observable
но может быть импортировано непосредственно из rxjs
:
import { Observable, of as observableOf } from 'rxjs'; // since RxJs 6
method(): Observable<boolean> {
if (sessionId === '')
return observableOf(false);
}
// ...
}
Проверьте метод:
import 'rxjs/add/observable/of';
Observable.of();
Вы можете создавать наблюдаемые объекты из полей и решать свою проблему примерно так:
method(): Observable<boolean> {
if (sessionId === '')
return Observable.of(false); // Now we got an Observable instance
return this._http.get('sessionId=' + sessionId).map(res=> {
if (res.status === "success") {
return true;
}
return false;
});
}
документация: http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#static-method-of