[英]Generics functions in TypeScript
我正在閱讀這篇關於如何使用 Axios 和 TypeScript 的文章,我對方法聲明有疑問,例如:
get<T = any, R = AxiosResponse<T>>(url: string, config?: AxiosRequestConfig): Promise<R> {
return this.http.get<T, R>(url, config);
}
delete<T = any, R = AxiosResponse<T>>(url: string, config?: AxiosRequestConfig): Promise<R> {
return this.http.delete<T, R>(url, config);
}
現在,我想了解的是這種語法:
<T = any, R = AxiosResponse<T>>
為什么T
等於any
,難道不是 Generics 的概念T
可以是任何東西嗎? 為什么我需要指定它? 是為了可讀性嗎? 另外為什么R
等於AxiosResponse<T>
? 不能說 function 的返回類型是Promise<AxiosResponse<T>>
,是不是也是為了少寫返回類型的代碼?
這些是未指定類型且無法推斷時使用的默認值。
...難道不是 Generics 的概念
T
可以是任何東西嗎?
不一定,泛型類型參數可以被約束,但在這種情況下是可以的。
為什么我需要指定它?
您不需要(但您可以),如果您不需要,則有一個默認值,並且無法從呼叫站點推斷出來。
另外為什么
R
等於AxiosResponse<T>
? 我不能說 function 的返回類型是Promise<AxiosResponse<T>>
...
如果您在響應中指定您期望的類型,則使用它會更簡單(並且可能更適合推理),而不需要Promise
包裝器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.