我正试图从rxjs
5迁移到6但我遇到了困难。当我试试这个
this._connectivity.isOnline().pipe(first()).subscribe((state) => {
this.syncCheck(user.uid);
});
我收到这个错误
Argument of type 'MonoTypeOperatorFunction<any>' is not assignable to parameter of type 'UnaryFunction<Observable<any>, Observable<any>>'.
Types of parameters 'source' and 'source' are incompatible.
Type 'import("/home/User/Desktop/projectname/node_modules/rxjs/Observable").Observable<any>' is not assignable to type 'import("/home/User/Desktop/projectname/node_modules/rxjs/internal/Observable").Observable<a...'.
Property 'map' is missing in type 'Observable<any>'.
您似乎对isOnline()
返回类型有错误的导入。确保你总是从rxjs
导入,而不是从rxjs/internal
甚至rxjs/internal/Observable
导入。 (像first()
这样的运营商必须从rxjs/operators
进口)
我的代码发现了同样的错误:
let source = of([1, 2, 3, 45, 56, 7, 7])
.pipe(
filter((x: number) => x % 2 == 0)
);
TS2345:类型'MonoTypeOperatorFunction'的参数不能分配给'OperatorFunction'类型的参数。
要解决此问题,请从过滤器功能中删除类型
filter(x => x % 2 == 0)
现在你有错误
算术运算的左侧必须是'any','number'类型,所以请确保这个恼人的过滤器获得正确的数据类型
filter(x => Number(x) % 2 == 0) // parse element to number
但是现在代码停止了工作。最后,为了解决这个问题,从一开始就改为。
let source = from([1, 2, 3, 45, 56, 7, 7])
.pipe(
filter((x: number) => Number(x) % 2 === 0)
)
要么
let source = of(1, 2, 3, 45, 56, 7, 7)
.pipe(
filter((x: number) => Number(x) % 2 === 0)
)
因此,错误原因是我的初始数据结构。
我想,我的例子可以帮助你处理类似的问题。