Хоть я и не Илья но ответ от этого сильно не изменится.
Про Flow вообще забудьте) Теоретически Flow более строг и придирчив, но головной боли вы с ним выгребете еще больше чем с ТС на реальном проекте.
Штука в том, что проект, на котором я работаю сейчас и последнее время как раз на Flow. С каждой итерацией мой подход к типизации все строже. И у меня сейчас есть ощущение, что я могу половину проекта разобрать на запчасти и потом собрать по-другому. И если Flow это пропустит, то это практически всегда заработает без каких-то проблем.
Если сделать то же самое о чем я говорю на чистом JS (на котором работает проект параллельной команды), то они потом пол года будут пытаться тесты пройти.
И в общем я очень доволен.
Да, проблемы есть типа кучи проверок. Как в старом анекдоте: "Как защититься от венерической болезни? Надо надеть презерватив, смазать его зелёнкой, надеть второй, смазать йодом, сверху забинтовать, залить эпоксидной смолой. И главное - никаких половых контактов!". Вот это подход flow: все проверить, везде перестраховаться и если теоретически все равно могут юыть проблемы, то лучше это не использовать.
И вот я слышу мнение Ильи, к чьему мнению я всегда прислушиваюсь, что TS не дает никаких гарантий... Но при этом я уверен, что Flow мне дает серьезные гарантии безопасности кода.
Тут два варианта: либо я напрасно так уверен во flow, либо TS в этом плане сильно слабее.