2

我目前正在学习角2,以Deborah Kurata的Pluralsight类(Angular 2:Getting Started)为例。目前为止这很棒,但对于我的生活来说,我似乎无法发现我的.catch的返回类型应该是什么。在她的课程中,以及我迄今为止发现的每个示例中,返回类型都留空。什么是Http.get()。catch的返回类型?

这是我有:

getProducts(): Observable<IProduct[]> { 
    return this._http.get("someurl") 
     .map {.....} 
     .catch(this.handleError); 
} 

handleError (response: Response) **/*what goes here?*/** { 
    // the code in the course says Observable.throw, but chrome is 
    // complaining that there is no such function. I have tracked 
    // down "static throw: typeof ErrorObservable.create;" in 
    // Observable.ts but I'm not sure what's going on here. 
} 

回答

0

最常见的返回类型为Observable

准确地说,选择功能将catch()操作定义为:

(err: any, caught: Observable): ObservableInput 

返回可观察使用,支持多种返回类型的subscribeToResult订阅(这就是为什么有ObservableInput并不仅仅是Observable)。无论如何,它更容易看看是不是在线文档在源代码中的例子还没有,你应该能够理解它是如何工作的:https://github.com/ReactiveX/rxjs/blob/master/src/operator/catch.ts#L8

或者看到什么subscribeToResult支持:https://github.com/ReactiveX/rxjs/blob/master/src/util/subscribeToResult.ts#L17

+0

谢谢@马丁。不幸的是,源代码不能说明太多(对我而言)。但是我看到了“输出函数_catch (this:Observable ,selector:(err:any,caught:Observable )=> ObservableInput ):Observable {...}所以,”_catch“(不是” catch“)是一个函数,它需要”this“(在TS中是如何工作的)和一个选择器函数,选择器函数返回ObservableInput ,而_catch本身返回Observable 。赶上“返回?(我也试图返回”Observable“,但当然它抱怨丢失的泛型类型。) –

+0

@ emery.noel你能显示给你类型错误的确切代码吗? – martin