Angular 2:存在两个具有此名称的不同类型

Tom*_*rik 14 angular

在我的Angular 2应用程序中,我有以下代码:

import { Observable } from 'rxjs/Rx';
import { Subscription } from '@angular-cli/ast-tools/node_modules/rxjs/Rx';
...
private broadcastDataSubject: BehaviorSubject<Event>;
...
let sub: Subscription = this.broadcastDataSubject.asObservable().subject(event).subscribe(() => this.bla());
Run Code Online (Sandbox Code Playgroud)

问题出在最后一行,代码不会因为:

"类型'订阅'不能指定为"订阅"类型.存在两个具有此名称的不同类型,但它们是无关的."

我的第二个项目中有相同的代码,运行没有问题.

Tom*_*rik 8

问题是我有2个相同的导入:

import { Subscription } from '@angular-cli/ast-tools/node_modules/rxjs/Rx';
Run Code Online (Sandbox Code Playgroud)

一个在组件中,一个在服务中.

  • 你能澄清为什么这是一个问题吗?这真的是什么事吗?我在多个地方需要相同的东西的地方都有相同的import语句.我可以看到如何从两个不同的Rx安装导入是一个问题. (4认同)

Fir*_*nks 6

直到我看到我从以下位置导入我的Observable时,我遇到了同样的问题:

import { Observable } from '@firebase/util';
Run Code Online (Sandbox Code Playgroud)

我改成了:

import { Observable } from 'rxjs/Observable';
Run Code Online (Sandbox Code Playgroud)

它工作正常.


Vin*_*kar 5

当我拼错Observable时,我收到了这个错误.在我写的导入中:

import { Observable } from 'rxjs/observable';
Run Code Online (Sandbox Code Playgroud)

它应该在哪里

import { Observable } from 'rxjs/Observable';
Run Code Online (Sandbox Code Playgroud)

PS这是5.2.11版本