任何人都可以向我解释给定的代码片段吗?它能做什么?

时间:2018-06-13 13:08:22

标签: angular typescript

    /** 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)

2 个答案:

答案 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);