angular2 CLI项目中缺少一些RxJS运算符?该怎么办?

AIo*_*Ion 3 strong-typing rxjs typescript rxjs5 angular

我正在学习RxJS,我经常尝试许多我感兴趣的运算符和组合.

我在这里学习表格:http://reactivex.io/documentation/operators.html和这里.

我有一个Angular2 rc4 CLI项目 - 所以我使用的是Typescript.RxJS是:5.0.0-beta.6

问题:

我发现Observable上没有一些操作符.

例如:我想创建一个observable,它返回一个对象的一个​​键值对:你可以看到实现的样子,就像我从这里开始的那样.

// Using Standard JavaScript
var obj = {
  foo: 42,
  bar: 56,
  baz: 78
};

var source = Rx.Observable.pairs(obj);

var subscription = source.subscribe(
  function (x) {
    console.log('Next: %s', x);
  },
  function (err) {
    console.log('Error: %s', err);
  },
  function () {
    console.log('Completed');
  });

// => Next: ['foo', 42]
// => Next: ['bar', 56]
// => Next: ['baz', 78]
// => Completed
Run Code Online (Sandbox Code Playgroud)

但这是我的编辑器的样子:

在此输入图像描述

Observable.pairs没有Intelisense()..

在此输入图像描述

根据这篇文章我已经获得了2个进口:

import {Observable} from "rxjs/Rx";
import 'rxjs/Rx'; // import all operators and stuff. it's not good practice i know, but only for this example
Run Code Online (Sandbox Code Playgroud)

并尝试为rxjs安装比angular cli提供的更多的打字,但是不起作用:

typings install --save --ambient npm:rx/ts/rx.all.d.ts // Unable to resolve "npm:rx/ts/rx.all.d.ts" from "rx"
or
typings install rxjs // Unable to find "rxjs" ("npm") in the registry.
Run Code Online (Sandbox Code Playgroud)

并试图使用:

import * as Rx form 'rxjs/Rx'
myObjProperties$ = Rx.Observable.pairs(myObj) // still doesn't work, same error.
Run Code Online (Sandbox Code Playgroud)

而且,我无法解释为什么将Observable对象打印到控制台不起作用..我得到一个string-function没用的东西.没有原型的东西.

console.log('TheAllmightyObservable : ', Observable) // i get:

// TheAllmightyObservable :  function Observable(subscribe) {
        // this._isScalar = false;
        // if (subscribe) {
            // this._subscribe = subscribe;
        // }
    // }
Run Code Online (Sandbox Code Playgroud)

我和许多其他运算符有同样的问题:ofObjectChanges,ofArrayChanges,ofWithSkeduler,pair - 其中一些并不重要 - 但是当我发现一个非常有用的RxJs运算符时它会让我感到烦恼,我无法在angular2 CLI中使用它项目.

问题:

  1. angular2与RxJS有什么关系?(我猜错了一般画面..) - 是否有一个单独的angular2-rxjs运算符列表或RxJS是完全分离的包,可以像Jquery一样使用吗?我的意思是2之间没有有线干扰 - 我无法预测.(消化周期可能相关吗?!)

  2. 我在哪里可以找到angular2上可用的所有RxJS运算符的良好列表 - 假设存在.

  3. 这只是一个打字稿 - 打字问题吗?如果是这样,如何安装它们以便拥有文档中可用的所有操作符?如果没有可用的打字,如何暂时摆脱这个"no property/method found on x"问题?

非常感谢您花时间阅读并帮助我找到解决方案:)

pau*_*els 5

根问题:您正在使用一个版本的RxJS,但查看另一个版本的文档.

RxJS 5(beta)与Angular 2一起使用:https://github.com/ReactiveX/rxjs RxJS 4(稳定版):https://github.com/Reactive-Extensions/RxJS

新版本中不存在这些操作符,这就是您无法看到它们的原因.

对你的问题:

1)RxJS与Angular2没有任何关系,你可以在没有Angular2的情况下使用RxJS.RxJS只是一个用于创建事件流的库,它与您用于生成事件的内容正交运行.

2)如果您使用的是RxJS 4,那么您可以使用非常好的文档.RxJS 5仍处于进展中的工作,但也有被构建过程中生成的文档在这里.

3)在这种情况下,这不是一个打字问题.