我正在使用类型记录制作一个离子型2应用程序,在从版本2.2.1升级到版本2.1.0之后,我已经开始收到以下错误:
类型'() =>可观测‘不能分配到类型'() =>可观测’。具有此名称的两种不同类型存在,但它们是不相关的。类型‘可观察’是不能分配的类型‘可观察’。具有此名称的两种不同类型存在,但它们是不相关的。
此错误会重复下列每一行
L28: this.onDisconnect = Network.onDisconnect
L29: this.onchange = Network.onchange
L30: this.ontypechange = Network.ontypechangeNetwork是从ionic-native导入的类,它的onDisconnect、onchange和ontypechange方法定义如下:
static onDisconnect(): Observable<any>;
static onchange(): Observable<any>;
static ontypechange(): Observable<any>;我将onDisconnect、onchange和ontypechange作为称为“网络”的自定义类(@Injectable()类)的public属性,并将它们定义为:
L15: public onDisconnect: ()=>Observable<any>
L16: public ontypechange: ()=>Observable<any>
L17: public onchange: ()=>Observable<any>我有三个问题?
First:会帮助我理解错误在类型记录中的真正含义,以及为什么在我的代码中会发生这种错误。
第二:虽然我知道我可以扩展这个类,但我不想这样做。因此,我要问的是,将我的方法声明为public,而类中的方法是static,这是否是造成这个问题的原因?
第三种:,这两种定义类上的属性的区别是什么?
编辑:
我刚刚意识到我以前尝试过扩展Network类,但是由于静态声明而失败了
发布于 2017-03-21 01:57:16
在node_modules树中隐藏着两个不同版本的rxjs,TS不知道它们是“相同的”。
要尝试的第一件事是清除整个node_modules目录,刷新npm缓存,并重做npm install。
如果这不能解决问题,根本问题很可能是不同的依赖项指定了不兼容的rxjs版本,迫使npm为其中一个或多个版本引入一个单独的rxjs版本(它将放在node_modules目录中的某个模块下)。您将看到一个结构,如
node_modules
dependencyA
rxjs
dependencyB
node_modules
rxjs如果这是正在发生的事情,那么您将别无选择,只能跟踪违规的版本要求。例如,顶级package.json可能有rxjs: "^5.2.0",而dependencyB/package.json可能有rxjs: "5.0.0"。
发布于 2018-05-18 07:50:54
这对我起了作用:
将import { Observable }由rxjs/observable改为import { Observable }由rxjs;
发布于 2020-01-22 05:43:22
由于RxJS和Ngrx v7在某个版本中不兼容,我得到了一个类似的错误。将RxJS降至~6.4.0有帮助。我运行yarn add rxjs@~6.4.0为我工作,并解决了错误。
https://stackoverflow.com/questions/42917003
复制相似问题