В настоящее время я изучаю React и думаю, что хорошо его понимаю. Однако есть одна вещь, которая беспокоит меня при разработке надежных приложений React - какие инструменты используют разработчики для проверки статического типа?
Мне очень нравится TypeScript. Я думаю, что это значительно облегчает разработку приложений JavaScript благодаря проверке типов и другим интересным функциям. Visual Studio Code также предлагает действительно хорошее автозавершение кода. И я знаю, что могу заставить его работать с React, используя типизацию + DenifentyTyped.
Дело в том, что руководств по использованию React + TypeScript не так много. Также, похоже, не так много статей о разработке с использованием этой комбинации. С другой стороны, похоже, что многие люди используют Flow, проект, поддерживаемый Facebook (и я думаю, они также используй это).
Мне удалось найти обсуждение на Reddit с плюсами и минусами. о том, как идти по пути React + TypeScript / React + Flow. Однако мне он кажется довольно устаревшим, поскольку ему сейчас около 10 месяцев. Думаю, с тех пор многое изменилось.
Я также нашел две статьи об использовании React + Flow и React + TypeScript. Автор указывает на некоторые проблемы, с которыми он сталкивается при использовании обоих вариантов, и приходит к выводу, что TypeScript - «лучший выбор прямо сейчас» (ноябрь 2015 г.), особенно потому, что у проекта Flow много проблем и низкая активность разработчиков со стороны Facebook. Он также упоминает, что это плохо сочетается с Babel?
Итак, я предполагаю, что вопрос будет в следующем: безопасно ли использовать комбинацию React + TypeScript, или я столкнусь с некоторыми трудностями? А как насчет Flow? Есть ли другие подобные инструменты, которые мне стоит попробовать? Какой подход вы порекомендуете?
Обновление, сентябрь 2017 г .:
Имея более года опыта ежедневного использования TypeScript и некоторое время играя с Flow, я пришел к следующим выводам:
- TypeScript по сей день болезненно использовать. Проблема в том, что мир JavaScript движется так быстро, что TypeScript продолжает отставать. Думаете об использовании этой новой причудливой функции ES7 stage 3? Нет, не можешь. Хотите получить подсказки по типу последней версии какой-нибудь библиотеки? Подожди месяц, а то и два, а может и больше ...
- Flow прошел долгий путь, он был значительно улучшен, он может улавливать некоторые вещи, которые TS не может. Лучше всего то, что он наконец-то работает в Windows. Кроме того, есть отличный плагин для VS Code (не знаю, почему у него рейтинг 3/5). И он работает на все 100% с React Native, TypeScript еще не на 50%.
- В большинстве случаев типы вообще не нужны. Дополнительный набор текста того не стоит. JS - это язык с динамической типизацией, избавьтесь от этого :)
TL; DR: Если вы планируете использовать какую-либо программу проверки типов, я рекомендую использовать Flow.
Обновление, февраль 2019 г .:
Я считаю, что приведенная выше рекомендация устарела и больше не актуальна. Три причины:
- Здесь React Hooks. Они значительно упрощают проверку типов вашего кода. В большинстве случаев дополнительный код не требуется.
- Улучшен вывод типа TypeScript.
- У TypeScript гораздо большее сообщество, чем у Flow. Даже yarn, менеджер пакетов Facebook, переходит от Flow к TypeScript.
Итак, я думаю, что TypeScript - гораздо более прагматичный выбор, чем Flow в 2019 году.
Что касается того, стоит ли вообще использовать какую-либо проверку типов, я бы сказал, что это зависит от размера проекта. Маленьким проектам это, наверное, не нужно.