Javascript Typescript rxjs可观测数组concat

Javascript Typescript rxjs可观测数组concat,javascript,typescript,rxjs,Javascript,Typescript,Rxjs,我在使用rxjs Observable.concat函数和typescript时遇到问题。 获取错误“无法读取未定义的属性“apply” 问题似乎只存在于typescript和 可能特定于rxjs版本5 concat。代码似乎与rxjs V4一起工作 这里是一个简化版本的代码说明了这个问题 /*jshint esnext: true */ console.clear(); console.log('started'); class test{ observableArray: Obs

我在使用rxjs Observable.concat函数和typescript时遇到问题。 获取错误“无法读取未定义的属性“apply”

问题似乎只存在于typescript和 可能特定于rxjs版本5 concat。代码似乎与rxjs V4一起工作

这里是一个简化版本的代码说明了这个问题

 /*jshint esnext: true */

console.clear();
console.log('started');
class test{
    observableArray: Observable<any>[]=[];

    constructor(){
        this.observableArray.push(Rx.Observable.return("Line 1"));
        this.observableArray.push(Rx.Observable.return(56));
        this.observableArray.push(Rx.Observable.create((observer)=>{
             setTimeout(()=>{
                try{
                    observer.onNext("Waited for");
                    observer.onCompleted();
                }
                catch(err){
                     observer.onError(err);
                }
             },3000);
         }));
      }

    run(){
         // ... indeterminate number of observables pushed into array.
         // The problem lies below
         var source = Rx.Observable.concat(...this.observableArray);
         // seems to transpile into js: source =   Observable_1.Observable.concat.apply(Observable_1.Observable, this.observableArray);
         // In the chrome debugger I am getting error: Cannot read property 'apply' of undefined      

         var subscription = source.subscribe(
             function (x) {
                 console.log('Next: ' + x);
             },
             function (err) {
                 console.error('Error: ' + err);
             },
             function () {
                 console.log('Completed');
         });
      }
  }

}
/*jshint-esnext:true*/
console.clear();
log('started');
课堂测试{
observableArray:Observable

好的,问题解决了

反应式js版本5用户的重要注意事项: 在带有rxjs的typescript中,为了最小化应用程序大小,必须专门导入每个操作符,以便包含函数/操作符。 所以这条线

必须在typescript文件的顶部包含从“rxjs/operators/concat”导入{concat}
,concat才能工作


让我困惑的是,我在VS2015中获得了用于Observable.concat函数的intellisense,尽管该函数实际上尚未导入。

我使用的是rxjs 5.5.7,必须使用
导入'rxjs/add/Observable/concat';

代码本身看起来像:
Observable.concat(…Observable).subscribe等

此外,我不得不将import{Observable}从'rxjs/Observable'更改为import{Observable}从'rxjs'更改为import{Observable};