A couple of points here.
First, you only mention inferencing in the context of Flow. But it is worth pointing out that TypeScript does plenty of type inferencing itself. It just doesn’t do as much as Flow.
But that leads me to my second point which is about your example. I’m a bit surprised that Flow generates the message “The operand of an arithmetic operation must be a number”. While that is true for the operator, the code itself is not necessarily an error because of implicit conversions. So I would argue that in this case, the TypeScript compiler is more correct than the Flow compiler because it does not (nor should it, IMHO) flag an error. Granted, I don’t think relying on implicit conversions is a very good practice, but I think a better example is warranted here.