使用 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> {}