Posts

Showing posts with the label typing

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

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 ...