使用此代码
const start$ = Observable.fromEvent(this.getNativeElement(this.start),'click');
const stop$ = Observable.fromEvent(this.getNativeElement(this.stop),'click');
const interval$ = Observable.interval(1000);
const data = {count:0};
const intervalThatStops$ = interval$
.takeUntil(stop$);
start$
.switchMapTo(intervalThatStops$)
.startWith(data)
.scan((acc,curr) => {
return {
count: acc.count+1
};
})
.subscribe((x)=> console.log(x.count));
我已进入控制台
类型的参数' {count:number; }'不能指定类型'数字|的参数IScheduler&#39 ;. 输入' {count:number; }'不能指定类型' IScheduler'。 物业'现在'缺少类型' {count:number; }'。)
应该快速修复
.startWith<any>(data)
但是,正确的方法是什么?
提前致谢
答案 0 :(得分:2)
将其分成几部分,
start$
.switchMapTo(intervalThatStops$)
.startWith(data)
在switchMapTo之后,生成的Observable将从intervalThatStops $中发出值。而intervalThatStops $正在发出纯数字。因此,当您尝试.startWith({count:0})
时,您会收到Typescript错误,因为您的observable正在发出数字,但您正在尝试使用对象({count:0})启动。
解决方案是在使用startWith之前将intervalThatStops $映射到您的对象。
你可以做很多种方式 - 一种可能性是:
start$
.switchMapTo(intervalThatStops$)
.map(i => ({count: i})))
.startWith(data)