编辑请参阅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');
});
答案 0 :(得分:2)
你必须像这样导入每个可观察的方法或操作符
方法import 'rxjs/add/observable/of';
的
对于运营商import 'rxjs/add/operator/map';