在typescript中导入.of()for Observable

时间:2016-11-13 22:20:08

标签: angular typescript rxjs5

我使用这个伟大的回购用于我的角度2测试项目(TypeScript) - https://github.com/qdouble/angular-webpack2-starter。我需要使用 Observable.of(..)。当我尝试导入它时:

import { Observable } from "rxjs/Observable";
import { of } from 'rxjs/observable/of';

我明白了:

  
    

''类型' typeof Observable'。

上不存在   

我也尝试过以下方式:

import { Observable } from "rxjs/Observable";
import { of } from 'rxjs/add/observable/of'; // notice 'add'

我得到了:

  
    

node_modules / rxjs /添加/可观察的/的"'没有导出的成员' of#39;。

  

那么,如何为Observable导入这个Of()静态方法

2 个答案:

答案 0 :(得分:21)

您不必从{of}导入'rxjs/add/observable/of'。您可以直接使用

import { Observable } from "rxjs/Observable";
import "rxjs/add/observable/of";

或者您可以从" rxjs / Rx"中导入Observable。捆绑所有操作员。 不良做法

import { Observable } from "rxjs/Rx";

更新2018-01-26:RxJS v5.5 +可管理运算符

来自https://github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.md

  

从版本5.5开始,我们已经发布了#34;可管理运算符",可以在rxjs /运算符中访问(注意复数"运算符")。这些是一个更好的方法,只需要提供你需要的运算符而不是"补丁"在rxjs / add / operator /*.

中找到的运算符

现在"修补"进口将被弃用,最好使用严格的进口。

import { of as observableOf } from 'rxjs/observable/of'

并像那样使用

const myObs$: Observable<number> = observableOf(1, 2, 3)

答案 1 :(得分:13)

RxJS 6

RxJS 6 开始,由于更强大的直观API表面,导入大大简化并减少混乱现象:

  1. of 等创建方法直接从'rxjs'导入:

    import { of } from 'rxjs';

  2. 所有可管道的运算符都是从'rxjs/operators'导入的,例如:

    import { tap, map } from 'rxjs/operators';

  3. 迁移:

    如果您直接从RxJS 5更新,您甚至可以使用RxJS的TSLint规则,这将自动修复您的导入到更新的简化API:

    1. npm i -g rxjs-tslint
    2. rxjs-5-to-6-migrate -p [path/to/tsconfig.json]