Мы сделали один большой проект на стеке angular + typescript, и пару мелких на angular + js. В итоге думаем отказаться от angular вообще, смотрим в сторону react на es6 через babel + сторонние библиотеки для ajax, promise, и т.д.
Причины:
- Быстродействие. В нашем случае интерфейс может состоять из большого числа таблиц данные в которых непрерывно меняются (биржевые данные). Т.к. мы не можем повсеместно использовать :: (bind once) - digest цикл angular начинает сильно тормозить, интерфейс перестает быть отзывчивым. После того как рендер таблиц переписали на react (es6 через babel) все работает быстро. Весь остальной интерфейс работает через angular
- Чтобы реализовать некоторые вещи через angular, нужно досконально изучить как работает этот фрейморк, причем не по документации а исследуя его код. При этом получившееся решение может оказаться очень сложным для восприятия другими разработчиками. При этом те же самые вещи на React реализуются гораздо проще и понятнее, без траты времени на борьбу с фремворком.
- Используя React сложнее принять фиговые решения, чем если использовать angular (например в angular есть 20 способов как передать данные в директиву, когда как в react компонент он только 1). React реализует более простую и строгую концепцию нежели angular
- Мы видим что angular 2 совершенно не совместим с angular 1.x, и что у нас нет никаких шансов переехать, т.к. проект очень большой и никто не даст на это денег. Т.е. фактически мы будем вынуждены много лет поддерживать старую версию фреймворка на которую уже через год 2 все забьют, что удручает
Coffescript тоже пытались использовать, но после анонса es2015 решили что не будем, т.к. все равно большая пачка фич перекочевала из кофескрипта в новый стандарт, решили использовать babel который в будущем можно будет просто отключить.
Typescript - удобно использовать для написания библиотек, т.к. на выходе мы имеем так же .d.ts файлы которые могут использовать IDE для подсказок, так же .d.ts можно конвертнуть в jsdoc.