'MonoTypeOperatorFunction类型的参数 '不能赋值给'UnaryFunction'类型的参数 ,可观察 >”

问题描述 投票:4回答:2

我正试图从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>'.
angular typescript ionic-framework rxjs
2个回答
4
投票

您似乎对isOnline()返回类型有错误的导入。确保你总是从rxjs导入,而不是从rxjs/internal甚至rxjs/internal/Observable导入。 (像first()这样的运营商必须从rxjs/operators进口)


1
投票

我的代码发现了同样的错误:

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)
    )

因此,错误原因是我的初始数据结构。

我想,我的例子可以帮助你处理类似的问题。

© www.soinside.com 2019 - 2024. All rights reserved.