将RxJS与TypeScript一起使用

And*_*708 10 rxjs typescript

尝试将RxJS与TypeScript和Node.js一起使用时遇到问题.我正在使用NPM,我已经包含了rxjs-es版本5.我也使用了Typings,而且我已经包含了两个,es6-shim并且rx.all像这样:

{
  "ambientDependencies": {
    "es6-shim": "registry:dt/es6-shim#0.31.2+20160317120654",
    "rx.all": "registry:dt/rx.all#2.2.28+20160316155526"
  }
}
Run Code Online (Sandbox Code Playgroud)

以下是我的tsconfig.json档案.

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false
  },
  "exclude": [
    "node_modules",
    "typings/browser",
    "typings/browser.d.ts"
  ]
}
Run Code Online (Sandbox Code Playgroud)

在TypeScript文件中,我尝试执行以下操作:

import { Observable } from 'rxjs/Observable';

当我尝试编译脚本时,我收到以下错误:

typings/main/ambient/rx.all/index.d.ts(10,11): error TS2304: Cannot find name 'Rx'.
Run Code Online (Sandbox Code Playgroud)

即使我尝试在我的脚本中使用RxJS,也会发生这种情况,因此问题与TypeScript类型有关.

为了使用RxJS,我需要使用typings和NPM安装什么?特别是,我对使用Observables很感兴趣.谷歌搜索几个小时后,我似乎无法弄清楚我需要做些什么来使它工作.我试过以下,但没有任何运气.我也在NPM和打字中尝试了很多rx包的组合,但是没有发现任何有用的东西.任何帮助深表感谢!

小智 14

RxJS 5是用typescript编写的,默认情况下它的类型定义包含在已发布模块中,您可能不需要输入rx.all.实际上,这些类型定义是为以前版本的RxJS编写的.只需卸载rx.all类型定义,并尝试导入没有这些.


Lat*_*ior 6

Angular(不是AngularJS)完成此操作的正确方法是使用npm中的@types。命令如下:

npm install @types/rx --save-dev
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参见npm


Cor*_*lix 1

该类型文件取决于 Rx:

declare module "rx.all" {
    export = Rx;
}
Run Code Online (Sandbox Code Playgroud)

尝试安装“rx”以及“rx.all”:

typings install rx --save --ambient
Run Code Online (Sandbox Code Playgroud)

但请注意,这些键入假设您正在导入“rx.all”或“rx”,因此您的导入不会为您提供键入信息:

import { Observable } from 'rxjs/Observable';
Run Code Online (Sandbox Code Playgroud)

您可以从“rx”而不是“rxjs”导入吗?

import { Observable } from 'rx';
Run Code Online (Sandbox Code Playgroud)