### Goals

+ Type checks with enumerated error codes
+ String format type checks
+ Array type checks
+ Type guards (x is Type)
+ Type assertions (assert x is Type and return; otherwise, throw)
+ Customizable error messages (`ErrorMessageService.Map = /*Custom error code to error message format*/;`)
+ Promise-based API available

### Non-Goals

+ Performance is not a goal; we are stressing safety, and usability over performance.

### Promise-based API

While all type guards, and domain checks are synchronous, a promise-based API
may be desirable when wanting to validate a large number of conditions,
and using a final `catch()` to handle errors.
