2016-08-23 74 views
1

至于建议我使用如何在TypeScript中导入WebSocketSubject?

npm install @reactivex/[email protected] 

我可以导入几乎都这样安装:

import { Observable, Subscriber } from '@reactivex/rxjs'; 

但不WebSocketSubject。我试过了:

import { WebSocketSubject } from '@reactivex/rxjs'; 
import { WebSocketSubject } from '@reactivex/rxjs/observable/dom'; 

...和许多其他变化。

回答

2

dom不是一个文件,而是一个文件夹,这样会有什么进口:) 试试这个:

import { WebSocketSubject } from '@reactivex/rxjs/src/observable/dom/WebSocketSubject';

进口会给你打字稿源文件,但我会建议安装[email protected]而不是@reactivex/rxjs所以你可以这样做:

import { WebSocketSubject } from 'rxjs/observable/dom/WebSocketSubject';

上面的导入将给你.js文件,而不是.ts文件。自动完成和所有好的TypeScript的东西仍然会工作,因为该软件包有.d.ts文件!

一个提示:如果你有找到正确的导入路径问题:

  1. 转到node_modules/[<organization_name>/]<package_name>(组织名称是可选的,他们都开始@)。
  2. 这是您的所有进口的起点,从那里您可以追加任何文件夹/文件路径到[<organization_name>/]<package_name>和进口应该工作。

如果你只指向import语句[<organization_name>/]<package_name>打字稿将从package.jsonmain财产拿起导入文件的真实路径。在@reactivex/rxjs的情况下指向index.js,该文件将再次执行require('./dist/cjs/Rx')。因此,当您执行@reactivex/rxjs时,路径将被解析为node_modules/@reactivex/rxjs/dist/cjs/Rx.js

希望这个解释不是让人困惑,但有时路径分辨率可能是:-x

+0

这很丑,但确实有效!和它的node_modules,而不是npm_modules :-) –

+0

现在,我想知道为什么他们建议使用@ReactiveX的语法,如果它不是必要的... –

+0

对不起,错字那里...更新我的答案。我在第二个例子中正确写下了它! :D –