javascript - sintaxă typescript angular2 promise then callback


Sunt nou în TypeScript și nu pot găsi o alternativă pentru a optimiza o linie de cod, așa cum poți vedea mai jos. Trebuie să filtrez un array derivat dintr-o funcție callback pe care o trec unui promise.then()...

getAllItems(): Promise<MyItem[]> { 
    return this.http.get(this.itemsUrl).toPromise()
        .then(this.extractData)
        .catch(this.handleError);
}

getItem(id: number | string): Promise<MyItem> {
    var that = this; // i want to avoid to use this...
    return this.http.get(this.itemsUrl).toPromise()
        // ...just here
        .then(function(res) {               
            return that.extractData(res).filter(h => h.id === +id)[0];
        })
        .catch(this.handleError);
}

private extractData(res: Response) {
    let body = res.json();
    return body.data || { };
}

Codul de mai sus funcționează bine, dar vreau să folosesc o sintaxă mai scurtă (mai mult TypeScript, cred) pentru a realiza ceva de genul:

getItem(id: number | string): Promise<MyItem> {
    return this.http.get(this.itemsUrl).toPromise()
        // ... here again
        .then(this.extractData => result.filter(h => h.id === +id)[0])
        .catch(this.handleError);
}

evident că nu funcționează... aveți vreo sugestie, vă rog? Mulțumesc.

Răspuns #1

Trebuie să transmiți în continuare răspunsul metodei tale extractData:

getItem(id: number | string): Promise<MyItem> {
    return this.http.get(this.itemsUrl).toPromise()
        // ... here again
        .then(res => this.extractData(res).filter(h => h.id === +id)[0])
        .catch(this.handleError);
}