Ошибка машинописи при возврате subject.asObservable () - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть вопрос, надеюсь, вы сможете мне помочь.Спасибо

После обновления до Typescript 2.9.1 компилятор жалуется, что не возвращает тип, который должен вернуть метод.

ТЕКУЩИЙ КОД:

public getCardPairingSession(sessionId:string):Observable<FundSourceCardSessionInterface> {
    const subject = new Subject();

    this.apiService
      .get(this.buildApiPath('card-session/' + sessionId))
      .subscribe(
        (response) => {
          subject.next(response.result);
        },
        (error) => {
          subject.error(error);
        }
      );
/* <-- ERROR: Type 'Observable<{}>' is not assignable to type 'Observable<FundSourceCardSessionInterface>' */
    return subject.asObservable();
  }

МОЕ РЕШЕНИЕ:

до сих пор, я делаю свое возвращение, делая,хотя я не знаю, если это правильно, выглядит странно для меня.

return  <Observable<FundSourceCardSessionInterface>> subject.asObservable();

ВОПРОС:

Если раньше с Typescript 2.3.4 работал нормально, то теперь яНе понимаю, почему это не так? Почему я должен приводить возврат, если я уже указал, какой возврат ожидать в начале метода?в основном дублирует код:

public getCardPairingSession(sessionId:string):Observable<FundSourceCardSessionInterface> {

1 Ответ

0 голосов
/ 25 апреля 2018

Ошибка очевидна: вы объявляете функцию как возвращающую Observable<FundSourceCardSessionInterface>, а вы возвращаете Observable<{}>.Я думаю (не совсем уверен), что ранее TypeScript понимал, что вы возвращаете Observable<any>, а Observable<any> присваивается Observable<FundSourceCardSessionInterface>.Однако {} нельзя присвоить FundSourceCArdSessionInterface.

Изменить способ объявления вашего Subject:

const subject = new Subject<FundSourceCardSessionInterface>();`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...