Flow and TypeScript are both fantastic projects with a very noble and ambitious mission: to add static types to JavaScript. After working with the both of them extensively, I've come to the conclusion that, to no offense to the very many smart people working on Flow, there's little reason to choose it over TS for any new project going forward.
Reasons why I believe TS should be chosen over Flow:
- TS offers significantly more available type definitions for third-party libraries
- While the validity of this may depend on one's choice of libraries, I've never personally seen a project which had more Flow definitions than TS definitions available for its dependencies.
- TS offers very powerful features in its type system that are missing from Flow, like conditional types and argument spread types
- TS gives a stronger developer experience:
- Refactors:
- Go to definition (also available with Flow, but slower and doesn't always work)