2016-08-23 71 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 –

相關問題