Главный вопрос — это зачем Вам нужны статические типы в Вашем приложении. Я пишу на TypeScript и мне, например, очень не нравится то, что приходится на каждый чих изменения модели данных добавлять поле в модель или ставить тип any, причем указывать это явно. И даже хуже. Если какой-нибудь метод в качестве параметра принимает массив, в котором могут быть разные типы, то необходимо явно его кастовать к типу any[].
Я соггласен, что компиляция — это хорошо. Статическая типизация — тоже хорошо. Однако мое сугубое ИМХО, что к скриптовым языкам нужно относиться со скриптовым мышлением.
Возможно, если в том же WebStorm 7.0 значительно улучшилась поддержка TypeScript, мое негодование будет меньшим, либо сойдет на нет.
Однако, TypeScript предлагает писать в стиле того же шарпа без такого же инструмента, как решарпер.
Минус в сторону TypeScript и плюс в CoffeeScript — меньший объем кода, символов и тд.
Личное мнение, основанное исключительно на ощущениях — CoffeeScript няшечка, TypeScript монструозен.
Если писать на том же AngularJS, ИМХО TypeScript бессмысленен. Хотя при большом желании можно и это достаточно успешно делать.
Как советовал человек выше — посмотрите livescript, на мой беглый взгляд он даже больше няша, чем Coffee. Однако сразу оговорю, что ни строчки кода на LiveScript я не писал, впечатление сугубо от внешнего вида и его возможностей.