我正在Aurelia,aurelia-fetch客户端和Typescript上切齿。 当我设置catch函数时,我会在typescript中注意到
.catch(error => //do something error)
error
由typescript定义为any
但是当我在调试器中检查它时,我可以看到它是类型Response
为什么类型为any
而非Response
?
答案 0 :(得分:0)
请注意,fetch
method of HttpClient
的返回类型为Promise<Response>
:
fetch(input: Request | string, init?: RequestInit): Promise<Response>;
因此,您所指的catch
实际上来自Promise
。 catch
的类型定义实际来自TypeScript(lib.d.ts
):
/**
* Attaches a callback for only the rejection of the Promise.
* @param onrejected The callback to execute when the Promise is rejected.
* @returns A Promise for the completion of the callback.
*/
catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): Promise<T | TResult>;
any
的{{1}}类型的通用定义非常合理,因为它涵盖了所有情况。
希望这有帮助。