eurgh – strongly-typed errors for TypeScript
A simple convenience package offering strongly-typed customer errors to uses in TypeScript. You can embed a cause
which is any Error
that you want to encapsulate which is super useful for debugging nested try/catch/throw
.
When is this useful?
Using Node or Browser built-in Error
types is just cumbersome and weak in terms of flexibility. Eurgh is a lightweight library that contains a generic base class TypedError<Name, Code, Data>
which is extended by multiple errors such as NotFoundError
, ValidationError
, UnauthorizedError
, etc.
Extending with your own custom errors
Obviously, you can extend TypedError
and create your own custom typed error(s). For example, to create a TimeoutError
:
> // And you can then throw it from anywhere in your projecttry catch error
Shape
All of our errors implement the below interface, often narrowing it down further for strong error typing:
// The basic shape of any error from Eurgh // The generic interface implemented by our TypedError base class. // All custom errors extend TypedError which is defined as follows
Error Messages
Personally, I simply prefer to hide each custom error's message from the caller. That way, I normalize the way each error kind outputs its message. And you provide the input by typing your custom error's constructor
.
You can always add more flexibility by allowing a message: string
argument, or a more lax static factory method.
Why the name eurgh?
Mostly because:
- it kinda sounds like err
- it is a sound I make when I see random unexpected errors, ha
Finally, this is a package mostly built to be used in my own microservices. (I got tired of recreating and copy-pasting the same files from project to project.)