ввод переменной при использовании подклассов в TypeScript (RxJS) - PullRequest
0 голосов
/ 20 февраля 2019

У меня проблема при написании тестов для Angular с использованием RxJS.

У меня есть переменная, которая используется в качестве провайдера-насмешника (actions $), которая имеет тип «Наблюдаемый».Теперь я назначаю ему экземпляр подкласса (ReplaySubject).Но теперь метод "next" неизвестен (по крайней мере, в Typescript), потому что он не предоставляется "Observable", поскольку он принадлежит одному из подклассов "Subject".

Как мне ввести свою переменную "actions $"правильно или как я могу привести правильно, чтобы исправить сообщение об ошибке?

онлайн пример: https://ngrx.io/guide/effects/testing см. строку 12 против 41

Реализация RxJS

export declare class ReplaySubject<T> extends Subject<T> {
   ...
}

export declare class Subject<T> extends Observable<T> implements SubscriptionLike {
    ...
    next(value?: T): void;
    ...
}

мой код

let actions$: Observable<any>;

actions$ = new ReplaySubject(1);

// Property 'next' does not exist on type 'Observable<any>'.
actions$.next(new someThing());

1 Ответ

0 голосов
/ 20 февраля 2019

Вы должны набрать actions$ как Subject<any> или, если хотите еще больше конкретики, ReplySubject<any>.Subject расширяет Observable, поэтому он будет работать для функций hot и cold, если вы используете jasmine-marbles.

Что касается документации, на которую вы ссылались, я подозреваю, что actionsнапечатанный как Observable является ошибкой в ​​печати. ​​

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...