Как показали прошедшие годы, все можно сделать (или можно было бы сделать) самостоятельно, лучше, и не таких уж огромных ресурсов это требует.
Поэтому сейчас мы не боимся ни сложности задач, ни объемов работ. Как говорится: дорогу осилит идущий.
JS vs TypeScript vs Flow
Прелесть JS в слабой типизации. Обратите внимание на свойство enabled:
topScores: { id: 10050, caption: 'Top scores...', keyValue: 'F9', enabled: () => this.props.gameStage === gameStageEnum.ready, checked: false, exec: () => { const { dispatch } = this.props dispatch(showTS()) } }, nextPiece: { id: 20010, caption: 'Next piece', keyValue: 'F3', enabled: true, checked: () => this.props.nextPiece, exec: () => { const { dispatch } = this.props dispatch(nextPiece()) } },Для быстрого прототипирования бесценное качество. Но, попытку изменить что-то в существующем коде отсутствие строгих типов способно превратить в ад из миллиона сложно выявимых ошибок, которые будут проявляться только в момент выполнения и только в определенных обстоятельствах. Как правило, в разгар ключевой презентации у важного клиента.
Строгая типизация -- это не только ловля блох в момент компиляции, но и серьезная подмога в командной работе, когда один разработчик пытается понять код, написанный другим.
TypeScript это не только контроль типов, но и более-менее приближенная к знакомой всем парадигме реализация ООП.
Winner: TypeScript
Технологический стек
TypeScript -- язык программирования.Node + Express -- сервер.
Firebird 3 -- база данных. Будем так же смотреть на применимость MongoDB к части наших задач.
React/Redux -- фронтальная часть.
UI стили и компоненты -- выберем позже.
Начальные проекты
ng-back -- создан на основе шаблона TypeScript Node Starter. Требует запущенного сервера MongoDB (устанавливается отдельно).ng-front -- создан на основе шаблона Create React App c опцией для TypeSript. Подробности по использованию React/Redux вместе с TypeScript собраны тут.
ng-lingva -- запросы к данным на естественном языке.
ng-scratch -- визуальное проектирование/кодирование алгоритмов.
PS: ng stands for Next Gedemin or New Gedemin.