The goal of Flow is to find errors in JavaScript code with little
programmer effort. Flow relies heavily on type inference to find type
errors even when the program has not been annotated It precisely tracks
the types of variables as they flow through the program.

At the same time, Flow is a gradual type system. Any parts of your
program that are dynamic in nature can easily bypass the type checker
so you can mix statically typed code with dynamic code.

Flow also supports a highly expressive type language. Flow types can
express much more fine-grained distinctions than traditional type systems.
For example, Flow helps you catch errors involving null, unlike most
type systems.

NOTE:

Flow does not support 32-bit systems, but there is a commented out patch
included here that will allow it to build. Note that although `flow`
will compile and run on a 32-bit system with this patch, it will not pass
the built-in tests. The patch is included in the hopes that someone brave
enough will investigate this and help upstream deliver 32-bit support.
