Как показали прошедшие годы, все можно сделать (или можно было бы сделать) самостоятельно, лучше, и не таких уж огромных ресурсов это требует.
Поэтому сейчас мы не боимся ни сложности задач, ни объемов работ. Как говорится: дорогу осилит идущий.
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.
