Type-safety is no silver bullet. For example, I'm perfectly capable of writing a type-safe application that's riddled with bugs. It's the kind of bugs that just sort of stop happening after a type-checker is introduced that are interesting. So what types of things can you expect after introducing a tool like Flow? I'll share three factors that I've experienced while learning Flow. The Type System section in the Flow docs goes into much more detail on this topic, available at https://flow.org/en/docs/lang/.
One of the nice features of a dynamically-typed language like JavaScript is that you can write code without having to think about types. Types are good and they do solve a lot of problems—the point I'm trying to make, believe it or not—but sometimes you need to be able to just write code without having to formally validate for correctness. In other words, sometimes guesswork is exactly what you need.
If I'm writing a function...