node.js - การใช้การรวมการประกาศเพื่อปรับเปลี่ยนการโอเวอร์โหลดของฟังก์ชัน `next` ใน Express
ฉันต้องการเปลี่ยนแปลงการกำหนดประเภทสำหรับ NextFunction เมื่อใช้ Express เพื่อให้เมื่อเรียกใช้ next() พร้อมกับอาร์กิวเมนต์เพื่อเรียกตัวจัดการข้อผิดพลาดทั่วโลก Intellisense สามารถแสดงคุณสมบัติของวัตถุที่ตัวจัดการข้อผิดพลาดของฉันคาดหวังได้
ฉันมีอินเทอร์เฟซดังต่อไปนี้สำหรับสิ่งที่วัตถุที่ส่งเข้าไปใน next ควรมีลักษณะดังนี้:
interface MiddlewareError {
msg: string,
err: Error | string,
code?: number
}
Express มีการกำหนดสำหรับ NextFunction อยู่แล้วซึ่งรับพารามิเตอร์ err ที่มีชนิดเป็น any แต่ฉันต้องการเพิ่มให้พารามิเตอร์ err ใช้ชนิด MiddlewareError ของฉันแทน
ฉันลองเพิ่มสิ่งนี้ไปยังไฟล์กำหนดประเภทแบบกำหนดเอง:
declare module 'express-serve-static-core' {
export interface NextFunction {
(err?: MiddlewareError): void;
}
}
และมันใช้งานได้ ในตอนแรก เมื่อฉันแค่เขียน next(), แต่ทันทีที่ฉันส่งอาร์กิวเมนต์เข้าไป มันกลับไปใช้การนิยามประเภทเดิม:
เป็นไปได้ไหมที่จะทำสิ่งนี้โดยไม่ต้องทำอะไรแบบเช่น การคัดลอก/แก้ไขไฟล์ประกาศ Express ทั้งหมดแล้วใช้ไฟล์นั้นแทน? มันจะมีประโยชน์มากถ้าสามารถเห็นได้ว่าควรส่งอะไรไปยังฟังก์ชัน next แทนที่จะต้องจำเอาเอง โดยเฉพาะเมื่อทำงานร่วมกับนักพัฒนาหลายคน

