使用 Angular2 的 TypeScript 中的 Observables 规范
Specification of Observables in TypeScript with Angular2
我正在尝试创建一个服务,该服务 return 是我的组件可以订阅的 Observable。但是我收到以下错误:
Property 'subscribe' does not exist on type 'Observable'.
我目前正在 运行 构建 alpha.44,您将在下面找到一些重现该问题的代码。
import {Http} from 'angular2/http';
import {Observable} from 'angular2/core';
export class Backend {
http: Http;
constructor(http: Http) {
this.http = http;
this.getTeams().subscribe();
}
public getTeams(): Observable {
return this.http.get('/api/teams')
.map(JSON.parse);
}
}
将代码更改为 return "any" 类型似乎可行,但这会消除使用 TypeScript 的一些优势。有什么好的方法可以在当前的 Angular2 构建中对 Observables 使用严格类型吗?
来自 http.get
的 return 是 Observable
from rxjs
, not angular2 Observable
. As temporarily solution you can import rxjs Observable
from "@reactivex/rxjs/dist/cjs/Observable" (see this plunker)。
import Observable from '@reactivex/rxjs/dist/cjs/Observable';
class Backend {
// ...
getTeams() : Observable {
return this.http.get('api/teams.json')
.map(res => res.json());
}
}
但是恕我直言,将代码更改为 return "any" 是目前最好的解决方案。他们现在 in angular2 http module 这样做了。
使用它来消除这种 returns 可观察到
方法的 ngc 错误
yourMethod(...arguments): Observable<any> {}
我正在尝试创建一个服务,该服务 return 是我的组件可以订阅的 Observable。但是我收到以下错误:
Property 'subscribe' does not exist on type 'Observable'.
我目前正在 运行 构建 alpha.44,您将在下面找到一些重现该问题的代码。
import {Http} from 'angular2/http';
import {Observable} from 'angular2/core';
export class Backend {
http: Http;
constructor(http: Http) {
this.http = http;
this.getTeams().subscribe();
}
public getTeams(): Observable {
return this.http.get('/api/teams')
.map(JSON.parse);
}
}
将代码更改为 return "any" 类型似乎可行,但这会消除使用 TypeScript 的一些优势。有什么好的方法可以在当前的 Angular2 构建中对 Observables 使用严格类型吗?
来自 http.get
的 return 是 Observable
from rxjs
, not angular2 Observable
. As temporarily solution you can import rxjs Observable
from "@reactivex/rxjs/dist/cjs/Observable" (see this plunker)。
import Observable from '@reactivex/rxjs/dist/cjs/Observable';
class Backend {
// ...
getTeams() : Observable {
return this.http.get('api/teams.json')
.map(res => res.json());
}
}
但是恕我直言,将代码更改为 return "any" 是目前最好的解决方案。他们现在 in angular2 http module 这样做了。
使用它来消除这种 returns 可观察到
方法的 ngc 错误yourMethod(...arguments): Observable<any> {}