如何在 TypeScript 中导入 WebSocketSubject?

How do I import WebSocketSubject in TypeScript?

按照建议我使用

安装
npm install @reactivex/rxjs@5.0.0-beta.11

我几乎可以通过这种方式导入所有内容:

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

但不是 WebSocketSubject。我试过:

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

...以及许多其他变体。

dom 不是一个文件,而是一个文件夹,所以没有什么可以导入的:) 试试这个:

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

导入将为您提供 TypeScript 源文件,但我建议安装 rxjs@5.0.0-beta.11 而不是 @reactivex/rxjs,因此您可以这样做:

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

上面的导入将为您提供 .js 文件,而不是 .ts 文件。自动完成和所有好的 TypeScript 东西仍然可以工作,因为这个包有 .d.ts 个文件!

另一个提示:如果您在寻找正确的导入路径时遇到问题:

  1. 转到node_modules/[<organization_name>/]<package_name>(组织名称是可选的,它们都以@开头)。
  2. 这是您所有导入的起点,从那里您可以将任何 folder/file 路径附加到 [<organization_name>/]<package_name> 并且导入 应该 工作。

但是 如果你只指向 [<organization_name>/]<package_name> 的导入语句,Typescript 将从 main [= package.json 的 58=]。在 @reactivex/rxjs 的情况下,它指向 index.js 并且该文件将再次执行 require('./dist/cjs/Rx')。因此,当您执行 @reactivex/rxjs 时,路径会解析为 node_modules/@reactivex/rxjs/dist/cjs/Rx.js.

希望这个解释不会造成混淆,但路径解析有时可以是 :-x