title: Property 'catch' does not exist on type 'void'
body: <p>I would like to do <code>catchAsync1</code> but getting Error</p>
  <blockquote>
  <p>Property 'catch' does not exist on type 'void'</p>
  </blockquote>
  <p>and would like to know <code>catchAsync3</code> and <code>catchAsync2</code> are correct in typescript</p>
  <pre><code>import { NextFunction, Request, RequestHandler, Response } from 'express'
  
  export const catchAsync1 = (handler: RequestHandler) =&gt;
    (...args: [Request, Response, NextFunction]) =&gt; handler(...args).catch(args[2])
  
  export const catchAsync2 = (handler: RequestHandler) =&gt;
    (req: Request, res: Response, next: NextFunction) =&gt; { try { handler(req, res, next) } catch (err) { next(err) } }
  
  export const catchAsync3 = (handler: RequestHandler) =&gt;
    (...args: [Request, Response, NextFunction]) =&gt; { try { handler(...args) } catch (err) { args[2](err) } }
  </code></pre>