As an ML programmer I was wondering what the fuss is about with these two system, I think the article shows pretty well what the differences between those are.
The type system details are interesting (and accurate as far as I can tell), but the author (a Flow contributor) doesn’t point out TypeScript’s big advantage, which is its excellent editor & IDE integration.
The TS compiler itself ships with a language service for editors to hook into for autocomplete and error highlighting. The next version will also ship with an integrated refactoring API. TypeScript has always focused more on productivity than the most rigorous possible inference.
After having worked in both type systems Flow is the better option IMO. I’ve come to distrust TypeScript when considering whether the type system is covering my code appropriately. This makes it feel like using a very bulky documentation system when compared to Flow and leads to a more manual working relationship with the compiler to ensure correctly behaving code.
Another difference that mattered to me was that Flow has support for nominal types, where as I believe TypeScript is completely structural.
(It wouldn’t surprise me if this knowledge is outdated, but I think I learned this within the last six months.)
You are correct. Nominal types are under consideration for the future, but so far TS is structural only.