类型“订阅”不可分配给类型“订阅”

Posted

技术标签:

【中文标题】类型“订阅”不可分配给类型“订阅”【英文标题】:Type 'Subscription' is not assignable to type 'Subscription' 【发布时间】:2019-08-01 04:16:10 【问题描述】:

我在构建 JHipster Angular 项目时遇到此错误。它发生在命令yarn start

之后
import  Component, OnInit, OnDestroy  from '@angular/core';
import  ActivatedRoute, Router  from '@angular/router';
import  HttpResponse, HttpErrorResponse  from '@angular/common/http';
import  Subscription  from 'rxjs/Subscription';
import  JhiEventManager, JhiParseLinks, JhiAlertService  from 'ng-jhipster';
import  ITEMS_PER_PAGE, Principal  from '../../shared';
import  Observable  from 'rxjs/Observable';
....
private subscription: Subscription;
    private eventSubscriber: Subscription;
...
 ngOnInit() 
        this.subscription = this.route.params.subscribe((params) => 
            this.load(params['id']);
        );



> TS90010: Type 'Subscription' is not assignable to type 'Subscription'.
> Two different types with this name exist, but they are unrelated.

但它以前可以正常工作。我不知道为什么会这样。

【问题讨论】:

能否提供出现错误的代码?从两条错误线很难说。 ***.com/questions/43331230/…的可能重复 @JosefKatič 我提供了来自出现错误的许多组件之一的代码。 我的直觉告诉我你保存订阅以在 ngOnDestroy 中取消订阅。由于它是 Angular 原生的,因此您不需要这样做,因此您可能会跳过那段代码,除非您有其他用途。此外,您可以从 'rxjs' 导入 Observable 和 Subscription @YuriiBidiuk 你确定你在任何地方都从同一个源导入Subscription吗? 【参考方案1】:

尝试更改这些行

import  Subscription  from 'rxjs/Subscription';
import  Observable  from 'rxjs/Observable';

到这里

import Subscription, Observable from 'rxjs';

【讨论】:

【参考方案2】:

不直接回答您的问题,而是使用订阅对象跟踪您的所有订阅,只需使用一个主题并执行直到。这是在 Angular 中管理 rxjs 订阅的推荐方式。

finalise = new Subject<void>();

this.route.params.subscribe((params) => 
  this.load(params['id']);
).pipe(takeUntil(this.finalise)); // No need to unsubscribe if finalise emits.

ngOnDestroy() 
  this.finalise.next();
  this.finalise.complete();

现在您只需要一个对象来管理组件中的所有订阅。

【讨论】:

以上是关于类型“订阅”不可分配给类型“订阅”的主要内容,如果未能解决你的问题,请参考以下文章

类型“XX”不可分配给类型“YY”。 'XX' 可分配给'YY' 类型的约束,但'YY' 可以被实例化

反应类型错误“不可分配给'从不'类型的参数”

类型 '' 不可分配给类型 '() =>

打字稿 - 字符串'不可分配给类型'FC

类型“”不可分配给类型“JwtConfig”

为啥分配给 ObservableCollection 不会破坏 CollectionChanged 订阅者列表?