2016-04-03 2 views
1

In Angular 1 mit Typoskript ich in der Lage war Dienstleistungen zu schaffen, wo ich weiß, das Return ich wie ein Array von Zahlen oder einer Person Objekt erhalten:Angular 2 http stark typisierte return

public addAges(ages: number[]) : ng.IPromise<number[]> { 
    return this.$http.post('Proxy/AddAges',ages) 
        .then((response: ng.IHttpPromiseCallbackArg<number[]>) : number[] 
         => { return response.data; }); 
} 

In Angular 2 I‘ Ich habe den folgenden Service erstellt, der bisher funktioniert, aber ich weiß nicht, wo ich einen vollständig getippten ReturnType einstellen kann, wie in Angular 1 mit der IPromise und in meinem Fall mit einem Array von Personen.

import {Injectable} from 'angular2/core'; 
import {Http, Response} from 'angular2/http'; 
import {Person} from './../customDataClasses/Person' 
import 'rxjs/add/operator/map'; 

@Injectable() 
export class CourseService { 
    constructor(private _http: Http) { } 
    getPersons(name:string) { 
     return this._http.get(`Home/GetPersons?name=${name}`) 
          .map((res : Response) => res.json()); 
    } 
} 

Antwort

2

Ich denke, das ist, was Sie wollen:

import { Observable } from 'rxjs/observable'; 
import 'rxjs/add/operator/map'; 

... 

    getPersons(name:string):Observable<number[]> { 
     return this._http.get(`Home/GetPersons?name=${name}`) 
          .map((res : Response) => res.json()); 
    } 
+0

Ja - aber das "beobachtbare" nicht von meinem Typoskript – squadwuschel

+0

gefunden Sie können Observable importieren aus rxjs/Rx wie Import {beobachtbare} von ' rxjs/Rx '; – Abhinandan

+0

Wissen Sie, ob sich dies negativ auf die Ausgabegröße auswirkt, wenn Sie nicht selektiver importiert werden? Ich benutze TS nicht selbst und habe kein tiefes Wissen. –