gpt4 book ai didi

angular - RxJs6:OperatorFunction 与 MonoTypeOperatorFunction

转载 作者:搜寻专家 更新时间:2023-10-30 21:27:09 25 4
gpt4 key购买 nike

我有以下代码:

export class EventsChainComponent { 
eventSubscriber:Subscription;

constructor (protected eventService: EventService) {}


public registerComponentsEvent(event:any) {
// getOnEvent signature
// (method) EventService.getOnEvent(): Observable<FormEvent>
this.eventSubscriber = this.eventService.getOnEvent()
.pipe(filter((formEvent: FormEvent) => {return formEvent.key == event.event}))
.subscribe((formEvent: FormEvent) => {
..........
});
}

当我编译时,编译器返回以下错误:

Argument of type 'MonoTypeOperatorFunction' is not assignable to parameter of type 'OperatorFunction'.

所以,我搜索了一下,找到了 RxJs6 运算符过滤器 API:

export declare function filter<T, S extends T>(predicate: (value: T, index: number) => value is S, thisArg?: any): OperatorFunction<T, S>;
export declare function filter<T>(predicate: (value: T, index: number) => boolean, thisArg?: any): MonoTypeOperatorFunction<T>;

如您所见,过滤器作为 2 个重载方法,一个返回 OperatorFunction,另一个返回 MonoTypeOperatorFunction

谁能告诉我这两种类型的区别?谁知道我该如何解决这个错误?

注意:FormEvent 类是我创建的,EventServiceEventsChainComponent 具有相同的导入,引用相同的类。

最佳答案

对于其他有此问题的人:

我遇到了同样的问题。在我的例子中,问题出在事件对象上。

rxjs 和 angular/router 都有一个事件对象,所以发生了名称冲突。我为解决这个问题所做的是用不同的名称声明 @angular/router 事件,然后相应地使用。

{Event as RouterEvent} from '@angular/router';

之后:当我想使用 rxjs.Event 时,我使用 Event,当我想使用 @angular/router.Event 时,我使用 RouterEvent。错误消失了:)

希望对你有帮助

关于angular - RxJs6:OperatorFunction 与 MonoTypeOperatorFunction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52594026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com