ค้นหาเว็บไซต์

angular - มีใครสามารถอธิบายโค้ดสั้น ๆ ที่ให้มานี้ให้ฉันเข้าใจได้ไหม? มันทำหน้าที่อะไร?


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

คำตอบ #1

createHandleError เป็นฟังก์ชันที่คืนค่าฟังก์ชันทั่วไป

(serviceName='') => /* body here */ คือลายเซ็นของฟังก์ชันแรก ซึ่งส่งค่ากลับเป็นฟังก์ชันที่สองซึ่งบังเอิญเป็นฟังก์ชันทั่วไป

<T>(operation = 'operation', result = {} as T) => /* body here */

<T> คือรายการพารามิเตอร์แบบทั่วไป ตามด้วยรายการอาร์กิวเมนต์ของฟังก์ชัน ซึ่งมีอาร์กิวเมนต์ 2 ตัว โดยทั้งสองตัวมีค่าเริ่มต้น (operation='operation' และ result={} as T)

คำตอบ #2

ที่นี่ สิ่งที่คุณมีคือฟังก์ชันแบบผสมที่เขียนโดยใช้ไวยากรณ์ arrow function ที่ค่อนข้างใหม่ โดยสรุป ฟังก์ชันแบบ curried function ทำหน้าที่คือ มันจะคืนฟังก์ชันอีกตัวหนึ่งเมื่อถูกเรียกใช้งาน

ชื่อของฟังก์ชัน 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);