Angular 4.2.4 + Typescript 2.3.4 + RxJS 5.4.2:" first()"在Observable上不是已知的(!?!)

时间:2017-10-16 14:26:07

标签: angular typescript rxjs

  

编辑请参阅Ikhtiyor的答案,因为它可能会解决与TypeScript相关的问题。我的问题来自于我忘记了.subscribe并直接在.first()中编写了处理函数。

所以,面对这个错误:

Property 'first' does not exist on type Observable<{}>

我已经找到了人们坚持使用以下版本并解决问题的讨论:

  

Angular 4.2.4 + Typescript 2.3.4 + RxJS 5.4.2

尽管如此,它对我来说并不起作用。测试了2台机器(一台Mac,一台窗户)。甚至在清除node_modules并重新安装npm之后也没有。 任何人都面对这个拦截器?

示例:

const obs = new Observable( observer => {

  setTimeout( () => {
    observer.next(
      [{
        type: 'voting',
        title: 'First dynamic resolution',
        description: 'Issued by dummy web API. Dynamic data rocks.',
        documents: ['a doc'],
        voting:{ 'jem': -1 },
        status: 'PENDING'
      }, {
        type: 'voting',
        title: 'Other dynamic resolution',
        description: 'Issued by dummy web API. We know Jem is proud.',
        documents: ['another doc'],
        voting:{ 'jem': -1 },
        status: 'PENDING'
      }]
    );
  }, 1000);
});

// Compile stops here: Property 'first' does not exist on type Observable<{}>
// Original mistake: it's "obs.first().subscribe(..."
obs.first( data => {
  console.log('data feteched');
});

1 个答案:

答案 0 :(得分:2)

你必须像这样导入每个可观察的方法或操作符

方法import 'rxjs/add/observable/of';

对于运营商import 'rxjs/add/operator/map';