EDIT: The initial version of this post stated that the TypeScript compiler won't emit code if it finds errors in the source. This is not correct. By default, the compiler will emit code even if it detects errors, unless the --noEmitOnError flag has been set. This post has been updated accordingly.
I've recently been working on a project that uses TypeScript. I also have been playing with Flow on a personal project. In this post I want to talk about why I think these tools are important, some of the fundamental differences between them, and why the choice of which one to use might best be determined by the broader toolchain that you are working within, rather than just the particular technical merits of one or the other.