为什么 tsc(Typescript 编译器)忽略 RxJS 导入?
Why does tsc (Typescript Compiler) ignore RxJS import?
我已经使用 JSPM 和 SystemJS 设置了我的 Angular2 项目。我尝试在我的 boot.ts
文件中导入 RxJS
和一些运算符,但我的导入没有被转译到 boot.js
输出中。所以
// boot.ts
import {Observable} from 'rxjs/Observable'
import 'rxjs/add/operator/debounceTime'
...
如此处所述:https://github.com/ReactiveX/RxJS#es6-via-npm 最终为
// boot.js
System.register(['rxjs/add/operator/debounceTime', ...
tsc
(尝试使用 1.7.5 和 1.8.0):
// tsconfig.json
{
"compilerOptions": {
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": true,
"noImplicitAny": false,
"module": "system",
"moduleResolution": "node",
"rootDir": "src",
"target": "es5"
}
, "exclude": [
"jspm_packages",
"node_modules",
"typings/main.d.ts",
"typings/main"
]
}
我错过了什么???
更新
TypeScript 只会 emit
如果稍后在代码中使用导入。我只需要额外的运算符来监听 Angular2 control
的 valueChanges
observable。但是,如果缺少 rxjs
的 Observable
class,则无法修补其他运算符。因此,您需要通过像这样导入来强制 TypeScript emit
System.register
for Observable
:
// boot.ts
import 'rxjs/Observable'
import 'rxjs/add/operator/debounceTime'
...
所有功劳都归功于@RyanCavanaugh,他为我指明了正确的方向。
您需要以正确的方式导入 Observable class:
import { Observable } from 'rxjs/Observable';
如果您想同时包含所有运算符,则执行以下操作:
import { Observable } from 'rxjs/Rx';
来自评论的回答,成功解决了问题:
import 'rxjs/Observable'
参考:https://github.com/Microsoft/TypeScript/wiki/FAQ#why-are-imports-being-elided-in-my-emit
我已经使用 JSPM 和 SystemJS 设置了我的 Angular2 项目。我尝试在我的 boot.ts
文件中导入 RxJS
和一些运算符,但我的导入没有被转译到 boot.js
输出中。所以
// boot.ts
import {Observable} from 'rxjs/Observable'
import 'rxjs/add/operator/debounceTime'
...
如此处所述:https://github.com/ReactiveX/RxJS#es6-via-npm 最终为
// boot.js
System.register(['rxjs/add/operator/debounceTime', ...
tsc
(尝试使用 1.7.5 和 1.8.0):
// tsconfig.json
{
"compilerOptions": {
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": true,
"noImplicitAny": false,
"module": "system",
"moduleResolution": "node",
"rootDir": "src",
"target": "es5"
}
, "exclude": [
"jspm_packages",
"node_modules",
"typings/main.d.ts",
"typings/main"
]
}
我错过了什么???
更新
TypeScript 只会 emit
如果稍后在代码中使用导入。我只需要额外的运算符来监听 Angular2 control
的 valueChanges
observable。但是,如果缺少 rxjs
的 Observable
class,则无法修补其他运算符。因此,您需要通过像这样导入来强制 TypeScript emit
System.register
for Observable
:
// boot.ts
import 'rxjs/Observable'
import 'rxjs/add/operator/debounceTime'
...
所有功劳都归功于@RyanCavanaugh,他为我指明了正确的方向。
您需要以正确的方式导入 Observable class:
import { Observable } from 'rxjs/Observable';
如果您想同时包含所有运算符,则执行以下操作:
import { Observable } from 'rxjs/Rx';
来自评论的回答,成功解决了问题:
import 'rxjs/Observable'
参考:https://github.com/Microsoft/TypeScript/wiki/FAQ#why-are-imports-being-elided-in-my-emit