web-dev-qa-db-ja.com

typescriptのObservableの.of()をインポートします

angular 2テストプロジェクト(TypeScript)- https://github.com/qdouble/angular-webpack2-starter 。にこの素晴らしいレポを使用しています。 Observable.of(..)を使用する必要があります。インポートしようとすると:

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

私は得る:

プロパティ 'of'はタイプ 'typeof Observable'に存在しません。

また、次の方法で試しました。

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

私が得た:

node_modules/rxjs/add/observable/of "'には、エクスポートされたメンバー' of 'がありません。

したがって、ObservableのこのOf()静的メソッドをどのようにインポートできますか?

16
alvipeo

インポートする必要はありません{of} from '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から、rxjs/operatorsでアクセスできる「パイプ可能な演算子」が出荷されました(複数形の「演算子」に注意してください)。これらは、rxjs/add/operator/*にある「パッチ」演算子よりも、必要な演算子だけを取り込むためのより良いアプローチを意味します。

「パッチを適用する」インポートは廃止される予定なので、厳密なインポートを使用した方が良いでしょう。

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

そしてそのように使用します

const myObs$: Observable<number> = observableOf(1, 2, 3)
22
Noémi Salaün

RxJS 6

RxJS 6以降、インポートは大幅に簡素化され、より多くの直感的なAPIサーフェスのおかげで混乱が少なくなりました。

  1. ofなどの作成メソッドは、'rxjs'から直接インポートされます。

    import { of } from 'rxjs';

  2. すべてのパイプ可能演算子は、'rxjs/operators'からインポートされます。例:

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


移行:

RxJS 5から直接更新する場合は、RxJSのTSLintルールを利用することもできます。これにより、インポートがより新しく、簡素化されたAPIに自動的に修正されます。

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