使用RxJS编写Angular测试时遇到问题。
我有一个变量,用作模拟提供程序(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());
答案 0 :(得分:0)
您应该以{{1}}的形式输入Subject<any>
,或者,如果您想获得更多的特异性,请输入ReplySubject<any>
。 Subject
扩展了Observable
,因此,如果您使用的是hot
,它将适用于cold
和jasmine-marbles
函数。
关于您引用的文档,我怀疑将actions
键入为Observable
是印刷错误。