/** Create curried handleError function that already knows the service name */
createHandleError = (serviceName = '') =><T>
(operation = 'operation', result = {} as T) => this.handleError(serviceName, operation, result);
我不明白这一节
=><T> (operation = 'operation', result = {} as T)
答案 0 :(得分:4)
createHandleError
是一个返回泛型函数的函数。
(serviceName = '') => /* body here */
是第一个函数的签名,它返回第二个函数,恰好是泛型函数
<T>(operation = 'operation', result = {} as T) => /* body here */
<T>
是通用参数列表,后跟函数参数列表,其中包含2个参数,两个参数都有默认值(operation = 'operation'
和result = {} as T
)
答案 1 :(得分:0)
在这里,您所拥有的是使用相对较新的箭头功能语法编写的curried function。简而言之, curried函数所做的是,它在被调用时返回另一个函数。
curried 函数的名称是 createHandleError ,它接受名为 serviceName 的单个参数。参数( serviceName )的默认值设置为(serviceName = '')
。空字符串''
是服务名称的默认值。
因此,调用 createHandleError 将返回另一个函数,该函数将接受两个参数,即 operation 和 result (这些参数也分配了默认值)它)并显示通用参数列表(只是一种类型)。然后它调用 handleError 函数并将所有三个参数传递给它,即(serviceName, operation, result)
。
您可以像这样调用 createHandleError :
let intermediateCreateHandleErrorFunction = createHandleError("nameOfTheService");
intermediateCreateHandleErrorFunction(someOperation, someResult);
此外,您可以像这样调用 createHandleError :
createHandleError("nameOfTheService")(someOperation, someResult);