Javascript 如何在工厂函数中使用自定义对象类型编写JSDOC参数
我有一个工厂函数,它将用另一个功能(如记录器或错误处理程序)包装所有输入的函数,因此我们不需要手动处理它。代码已经正常工作了,但我没有任何自动完成功能。当我尝试在函数中键入时,它只显示Javascript 如何在工厂函数中使用自定义对象类型编写JSDOC参数,javascript,closures,jsdoc,Javascript,Closures,Jsdoc,我有一个工厂函数,它将用另一个功能(如记录器或错误处理程序)包装所有输入的函数,因此我们不需要手动处理它。代码已经正常工作了,但我没有任何自动完成功能。当我尝试在函数中键入时,它只显示处理程序:any,您有什么建议吗?我想要自动完成,但仍然使用JavaScript /** * @name FactoryFunction * @typedef {(req: Request, res: Response, next: NextFunction) => Response|Error} Han
处理程序:any
,您有什么建议吗?我想要自动完成,但仍然使用JavaScript
/**
* @name FactoryFunction
* @typedef {(req: Request, res: Response, next: NextFunction) => Response|Error} Handler
* @param {Object.<String, Handler>} handlers
* @return {Object.<String, Function>}
*/
const ErrorHandlerFactory = handlers => {
const result = Object.entries(handlers).reduce((acc, [name, fn]) => {
let wrapper = SyncErrorHandler
if (fn.constructor.name === "AsyncFunction") {
wrapper = AsyncErrorHandler
}
acc[name] = wrapper(fn);
return acc;
}, {});
return result;
};
const bookMw = ErrorHandlerFactory({
getBookByIdMw: (req, res) => {
const { bookId } = req.params;
const book = await getBy(Book, { id: bookId });
if (!book) {
throw new Error("Not Found");
}
return res.status(200).json(book);
},
})
/**
*@name FactoryFunction
*@typedef{(req:Request,res:Response,next:NextFunction)=>Response | Error}处理程序
*@param{Object.}处理程序
*@return{Object.}
*/
const ErrorHandlerFactory=处理程序=>{
const result=Object.entries(handlers).reduce((acc,[name,fn])=>{
让wrapper=SyncErrorHandler
if(fn.constructor.name==“AsyncFunction”){
包装器=AsyncErrorHandler
}
acc[名称]=包装器(fn);
返回acc;
}, {});
返回结果;
};
const bookMw=ErrorHandlerFactory({
getBookByIdMw:(请求、回复)=>{
const{bookId}=req.params;
constbook=wait-getBy(book,{id:bookId});
如果(!书本){
抛出新错误(“未找到”);
}
返回res.status(200).json(book);
},
})