Flowtype has a small set of features focussed on typechecking. It is a superset of JavaScript. It can be transpiled to JavaScript by simply stripping the type annotations. It allows you to specify types almost as little or as much you like. It becomes more powerful the more detail you specify. So you can easily leave some or most of your code with no type specifications.
Typescript has a large set of features focussed on classical object oriented concepts like abstract
, interface
, private
and others as well as type checking. It requires third party code is type specified, which makes it a bit of a nuisance to use daily or for rapid development projects.
The type annotations of both Flowtype and Typescript are identical and compatible. Both are supersets of JavaScript. However Typescript extends JavaScript with non-trivial features which are not yet in ECMAscript Next (and may or may not make it). Flowtype's extensions are trivial.
Flowtype is less mature and has poorer support and integration with editors. For example, JetBrains only just introduced support for Flowtype support, but it is still buggy and incompatible with webpack --watch
or webpack-dev-server
.
JetBrains has had good Typescript support for sometime already.