JavaScript is the natural choice when developing for the browser. For larger projects, however, there are issues concerning type safety and refactoring. TypeScript, Flow, and Elm are different approaches to compensate for that shortcoming by each introducing a type system of their own. Flow is a static type checker that has been developed and used by Facebook to find errors in JavaScript. TypeScript is an extension to JavaScript that compiles back to ES5 or ES6. It is actively developed by Microsoft and used as primary language for Google’s Angular 2 framework. Elm is the most radical approach, which abstracts quite a bit from JavaScript. Based on a set of real world examples that can benefit from type annotations we will discuss how the three approaches compare to each other.