How to write TypeScript definition for a middleware that adds property to the response?

Multi tool use
I'd like to use express-boom for express with TypeScript. It lacks of typings so I'd like to write my own. Just make it compile is trivial.
This middleware decorates the res
object with a property boom
(derived from the boom module):
But with typescript I need to cast it because neither http.ServerResponse
and Express.Response
have the boom property, of course:
Which is the cleanest way to do it? Which are other typed middleware that are doing a similar thing?
There's quite a few other Express middlewares you can use as examples, e.g. Method-Override, and its type definitions.
As a more concrete example, if you want to add this .boom property to the response object, you should just need to create a type definition (express-boom.d.ts) containing:
Create a type definition file express-boom.d.ts
containing:
This declares that the interface Express.Response
has an additional property named boom
. The declared type of the property is the same as that of the namespace Boom
, meaning that the property is an object that has all the same methods as the Boom
namespace.
Here is a sample usage. Hope this helps someone.
Include express-boom.d.ts
along with your applications source files.
Refer the sample-usage.ts
in the below gist for example usage:
Gist: Type definitions for express-boom:
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.