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);
},
})