Type-driven development is an approach to programming that uses a static-type system to achieve desirable attributes, such as safety and efficiency. This book will cover type-driven development using the ReasonML language and explains how to put its type system to use in order to check that your code is logically consistent. We use types to express relationships and other assumptions directly in the code, and these assumptions are enforced by the ReasonML compiler before the code is run.