Strongly typed models with Mongoose and TypeScript

Mongoose provides a layer of abstraction over MongoDB that makes validation, casting & business logic boilerplate more enjoyable. Creating your models with a TypeScript interface extends these benefits by creating a strongly typed model that increases developer confidence, development speed and reduces bugs.