I spent the last week using Flow at work. This is the first static type system I've used. It was much more challenging than expected and yielded no (perceptible) practical benefit. I lost a day trying to resolve Flow errors in seemingly simple code. The error messages are cryptic and sometimes the stack traces are misleading. Is this generally the experience with static type systems? Static typing appeals to me and I really want to like/get it. But after a week, Flow has left me feeling defeated.
The learning curve is steep if you are not familiar w/ static typing, and its not unheard of to run into bugs in flow itself, but overall I have found it to be really helpful.<p>In my experience it pays off best in refactors - in projects w/ good flow types I have been able to make big changes to my code, fix flow errors, and then have tests pass on the first run.<p>It's also great when working on code that others wrote - the type annotations are about the same amount of boilerplate as something like jsdoc, but having them checked automatically in my editor saves a lot of context switching between files.