Найти тему
development

TypeScript vs Flow

За что я люблю TypeScript и не люблю Flow.

По количеству фич TypeScript и Flow практически одинаковы и на самом деле холивар разводить не стоит. Хотя отличия все же присутсвуют, например,
у
TypeScript есть дополнительные примитивы для классов, реализующие полноценное ООП, числовые и строковые enum‘ы, а Flow умеет проходится по коду и предугадывать типы значений.

Первая вещь которая мне не нравится во Flow, то что он приучает писать невалидный код в .js файлах. Если однажды ваш коллега по отрасли вдруг захочет скопировать, например, ваш компонент себе в проект не заглянув в исходный код, то у него ничего не получится, его сборщик сломается и ему придется задуматься о дополнительном слое сборки или даже о выносе кода в отдельный модуль, скорее всего, уже после того как он уже назвал примерные сроки, что может привести к проблемам с дедлайном. Также джуниоры, которые вместо ванильного js увидят вот это вот все с типами, могут сильно испугаться. В TypeScript, аналогично jsx и другим препроцессорам, файлы имеют явно расширения .ts или .tsx. Про поддержку в IDE я ничего говорить не стану, хотя интуиция подсказывает что тут проблемы тоже скорее всего всплывут.

PS: если мы используем flow comment types то все ок.

Второй минус flow в том, что он написан на мало известном для javascript сообщества языке — ocaml. Это замедлит его развитие, и если однажды фейсбук откажется от него, то умрет он в ту же секунду!

Напоследок наброшу субъективного:
Для flow мало тайпингов у внешних библиотек, большинство из них частичны.
По flow гораздо меньше обучающих материалов, в то время как по
TypeScript даже есть курс на coursera.

У typescript почти в 2 раза больше звездочек на github, несмотря на то, что оба проекта начались в 2014 году.