Rxjs 如何在TypeScript中导入WebSocketSubject?

Rxjs 如何在TypeScript中导入WebSocketSubject?,rxjs,rxjs5,Rxjs,Rxjs5,按照建议,我使用 npm install @reactivex/rxjs@5.0.0-beta.11 我可以通过这种方式导入几乎所有内容: import { Observable, Subscriber } from '@reactivex/rxjs'; 但不是WebSocketSubject。我试过: import { WebSocketSubject } from '@reactivex/rxjs'; import { WebSocketSubject } from '@reactive

按照建议,我使用

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不是一个文件,而是一个文件夹,因此没有任何内容可导入: 试试这个:

从'@reactivex/rxjs/src/observable/dom/WebSocketSubject'导入{WebSocketSubject}

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

从“rxjs/observable/dom/WebSocketSubject”导入{WebSocketSubject}

上面的导入将为您提供.js文件,而不是.ts文件。自动完成和所有优秀的TypeScript内容仍然可以工作,因为包中有.d.ts文件

还有一个提示:如果在查找正确的导入路径时遇到问题:

转到节点_modules/[/]组织名称是可选的,它们都以@开头。 这是所有导入的起点,从这里您可以将任何文件夹/文件路径附加到[/],导入应该可以正常工作。 但是,如果只将import语句指向[/]Typescript,则会从package.json的主属性中获取导入文件的实际路径。在@reactivex/rxjs的情况下,它指向index.js,并且该文件将再次执行要求的“/dist/cjs/Rx”。因此,当您执行@reactivex/rxjs时,路径将解析为node_modules/@reactivex/rxjs/dist/cjs/Rx.js

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

dom不是一个文件,而是一个文件夹,因此不会有任何要导入的内容: 试试这个:

从'@reactivex/rxjs/src/observable/dom/WebSocketSubject'导入{WebSocketSubject}

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

从“rxjs/observable/dom/WebSocketSubject”导入{WebSocketSubject}

上面的导入将为您提供.js文件,而不是.ts文件。自动完成和所有优秀的TypeScript内容仍然可以工作,因为包中有.d.ts文件

还有一个提示:如果在查找正确的导入路径时遇到问题:

转到节点_modules/[/]组织名称是可选的,它们都以@开头。 这是所有导入的起点,从这里您可以将任何文件夹/文件路径附加到[/],导入应该可以正常工作。 但是,如果只将import语句指向[/]Typescript,则会从package.json的主属性中获取导入文件的实际路径。在@reactivex/rxjs的情况下,它指向index.js,并且该文件将再次执行要求的“/dist/cjs/Rx”。因此,当您执行@reactivex/rxjs时,路径将解析为node_modules/@reactivex/rxjs/dist/cjs/Rx.js


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

这很难看,但确实有效!还有它的节点单元模块,而不是npm单元模块:-现在我想知道,如果没有必要的话,为什么他们会建议使用@ReactiveX的语法…对不起,输入错误。。。更新了我的答案。在第二个示例中,我确实写对了!:D@BillBarnes是吗?认为他们的自述文件不是这样的:它适用于Typescript!这是丑陋的,但它的工作!还有它的节点单元模块,而不是npm单元模块:-现在我想知道,如果没有必要的话,为什么他们会建议使用@ReactiveX的语法…对不起,输入错误。。。更新了我的答案。在第二个示例中,我确实写对了!:D@BillBarnes是吗?认为他们的自述文件不是这样的:它适用于Typescript!