“unknown[]”类型的参数不可分配给 >“OperatorFunction”类型的参数

问题描述 投票:0回答:3

组件.ts

initialize()

方法说

“unknown[]”类型的参数不可分配给类型的参数 '运算符函数

'。 类型“未知[]”不提供 匹配签名'(来源:Observable): 可观察'

alertsChanged$: Observable<AlertModel[]>; private initialize(): void { this.alertsChanged$ = this.alertsService.getAlerts().pipe( map((res) => res), // here it returns the above error tap((res) => { this.setDataForFilters(res); //Argument of type 'unknown' is not assignable to parameter of type 'AlertModel[]'. }), ); } private setDataForFilters(alerts: AlertModel[]): void {}

服务.ts

// no issues here getAlerts(): Observable<AlertModel[]> { return this.angularFireDatabase .list<AlertModel>(`groups/${this.groupId}/alerts`) .valueChanges() .pipe( map((res) => orderBy(res, ['timeStamp'], ['desc'])), first() ); }

.html

<app-alerts [alerts]="alertsChanged$ | async" ></app-alerts>
请将问题发在这里?

angular typescript ionic-framework rxjs angularfire
3个回答
25
投票
我在这里发现了问题。这是与

Lodash map

RxJS map
的冲突。即,由于 Lodash 映射,VS 代码没有导入 RxJS 映射,因此出现了上述错误。

由于我需要在同一个组件上使用两者,所以我就这样做了。

import { finalize, tap, map } from 'rxjs/operators'; import { map as lodashMap } from 'lodash';
    

2
投票
如果我们同时使用“rxjs”和“rxjs/operators”的导入,也会出现同样的错误。就我而言,这就是代码,

this.anApiCall.getAdata(this.id) .pipe(map(res => this.dataUtil.parseToForm(this.id, res)), onErrorResumeNext(of(this.dataUtil.newForm(this.id)))) .pipe(tap(frm => this.form = frm)) .subscribe();
我使用的是“onErrorResumeNext”运算符,但不幸的是,IDE 从“rxjs”而不是 rxjs/operators 导入了该函数。

import { onErrorResumeNext } from "rxjs"; // if the import is like this then you will get error like 'Argument of type 'Observable<YourType>' is not assignable to parameter of type 'OperatorFunction<unknown, unknown>'.'
因此检查导入是否来自“rxjs/operators”。并将导入更改为

import { map, tap, onErrorResumeNext } from "rxjs/operators";
    

0
投票
就我而言,我从错误的位置导入“地图”:

import {map} from "highcharts";
我只需将其添加到我现有的 rxjs/operators 导入中:

import {take, map} from "rxjs/operators";
    
© www.soinside.com 2019 - 2024. All rights reserved.