With regard to the caveats mentioned earlier, what do static type systems actually give you?
A good type system catches almost all type errors for you before runtime
It accepts all or almost all programs that do not contain type errors
Being able to catch type errors before runtime is a very nice ability to have. It will help you to avoid possible downtime, expenses, lost business, and so on. Note that we mentioned a good type system. We should try to aim for the best type system we can get at our disposal. Since, Reason is OCaml, it automatically gets OCaml's powerful, safe, and expressive type system.