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