Express and Typescript - Error.stack and Error.status properties do not exist
Extend global Error
You can tell TypeScript that for your use case Error
might have a status
on it:
interface Error {
status?: number;
}
So you get:
interface Error {
status?: number;
}
var err = new Error('Not Found');
err.status = 404;
Alternative
Put the status on the res
and send the err
. For Example:
// catch 404 and forward to error handler
app.use(function (req, res, next) {
var err = new Error('Not Found');
res.status(404); // using response here
next(err);
});
The best way in my opinion, is not to disable type checks by setting the error to any
, or creating a new Error
type, since one already exists in @types/node
.
Instead, you should extend that error type:
interface ResponseError extends Error {
status?: number;
}