簡體   English   中英

Generics 在 TypeScript 中起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM