Имею некоторые знания в Java. Начал углубляться в JS. Столкнулся с таким выбором:
Вроде бы TS и дает много плюшек(после Джавы - манна небесная), - та же типизация чего стоит - но он идет, как кажется, немного в сторону от концепции JS. Новые стандарты он подхватывает долго, но ту же типизацию в JS ждать до старости надо. Плюс форумы и хабр пишут, что не все библиотеки JS корректно подхватывает.
С другой стороны - Babel. Новые фичи языка - пиши не хочу. Постоянно следует за стандартом JS, что является save-spot`ом для разработчика, если вдруг "система рухнет"(в отличии от TS). Плюс в плане карьеры, я думаю, владение Ecmascript`ами будет большим плюсом, чем владение TS. Из минусов - опять же хабр пишет, что Babel периодически говнокодит и дольше компилирует, чем TS. Вопрос к имеющим опыт разработки: на что лучше сразу упор делать? Сложилось двоякое впечатление(особенно после новости что Angular перешел на TS), нужна помощь. Вопрос закрыт. Почитав соответствующую документацию безоговорочно выбрал TS.
Даже подпишусь на вопрос, интересно, что будут советовать если выбирать между этими двумя :)
Вопрос из разряда. Еду я на машине и думаю, если полечу на самолете, могу разбиться, а если поплыву на корабле могу утонуть :) Что же выбрать?
Ответьте на вопрос. Зачем вам строгая типизация в JS, или какая либо другая функциональность TS, которой нет в JS?
Если у вас возникают вопросы подобные этому, то вам оно и не нужно. Инструмент нужно выбирать исходя из задачи...
Вы напрасно придаете столь высокое значение новым фичам.
Гугль Аналитик на моих сайтах показывает, что процент морально устаревших браузеров у посетителей очень велик - около 40% древностей.
И, кстати, противопоставление Typescript и Babel - вообще не уместно.
Typescript - идет по другому пути.
Он более надежен по определению, так как значительная часть проверок выполняется еще до того, как код идет в реальный браузер.
Если вас устраивает функционал Typescript - это будет вполне себе целесобразно. Качество ваших проектов будет выше.
Если же вам по каким то веским причинам нужен ES6 - используйте Babel на здоровье.
caniuse.com/usage-table
То, что "под Android", опираясь на имеющуюся у меня статистику, смею полагать, что это - стоковые не обновляющиеся браузеры. Те, что еще с Android 4 и 5 шли - а они далеко не современные.
pastenak, я и не выступаю как эталон.
я говорю что не зная специфики делать заявления "бабель/тс не нужны ибо моя или еще какая-то стата показывает много старых браузеров" - это ни о чем.
Мне кажется, что грамотный разработчик должны был бы понять, что совместимость является крайне важным фактором.
Какой смысл в модных фичах, если вы теряете посетителей.
Любой серьезный владелец коммерческого сайта даже за 15% потерянных посетителей - спишет вас как разработчика в утиль.
pastenak, по нашей стате посетителей со старыми браузерами не набирается даже на пол процента.
ибо специфика не хомячная, а для технарей при деньгах.
и при выборе "пилить поддержку старого хлама" или "запилить новую фичу еще вчера", контора делает выбор в пользу второго.
"Какой смысл в модных фичах, если вы теряете посетителей" и списывание разработчиков в утиль на ровном месте, не имея никаких показателей - очередные избитые выхлопы ни о чем.
pastenak, >> Какой смысл в модных фичах, если вы теряете посетителей.
Ну так суть babel как раз в том и состоит, чтобы взять современный код и конвертировать его в старый стандарт для поддержки большего числа браузеров-динозавров.
Так почему бы не писать современный код уже сейчас?
pastenak, еще раз для тех кто на бронепоезде: независимые от меня и от вас ссылки показывают средние данные по больнице, но в каждой конкретной нише стата будет другой.
разброс данных по пользователям, например, порнхаба и инфраструктуры для построения/управления корпоративными облаками, будет разительным.
совместимость и прочие бла-бла-бла - это конечно же хорошо. проблема только в том, что они не всегда нужны.
Сергей, это не работает на 100% надежно, к сожалению.
И, кстати, противопоставление Typescript и Babel - вообще не уместно.
Typescript - идет по другому пути.
Он более надежен по определению, так как значительная часть проверок выполняется еще до того, как код идет в реальный браузер.
Если вас устраивает функционал Typescript - это будет вполне себе целесобразно. Качество ваших проектов будет выше.
Если же вам по каким то веским причинам нужен ES6 - используйте Babel на здоровье.
еще раз для тех кто на бронепоезде: независимые от меня и от вас ссылки показывают средние данные по больнице, но в каждой конкретной нише стата будет другой.
Следовательно нельзя огульно давать советы, которые раздаете вы - в стиле "в топку старые браузеры".
совместимость и прочие бла-бла-бла - это конечно же хорошо. проблема только в том, что они не всегда нужны.
Вы правда полагаете, что человек не понимающий насколько различаются по принципам своим и по особенностям Babel и Typescript - отдает себе отчет когда что имеет значение в реальных проектах?
furrya_black, если мерять по конкретному проекту, то это нужно чтобы у проекта была история, статистика.
Тут же человек хочет выбрать под новый проект.
Он может ориентироваться только на общие показатели.
TypeScript и Babel сравнить можно, разве что в отношении того что их реализация предполагает прекомпиляцию JS,
Тем не менее, Babel - это просто прекомпилятор (т.е. он не вводит каких-то своих требований или понятий/концепта просто позволяет писать, например используя синтаксис нового стандарта JS, получая на выходе код совместимый с интерпритаторами JS которые его не поддерживают),
В то время как TypeScript - это всё таки, другой подход/концепт ("не поворачивается" назвать его полноценным языком)
Его основные "фичи" - строгая типизация, интерфейсы (в понятии ООП), сигнатуры методов подключаемых библиотек.
В Vanilla JS (в "чистом" JS) - этого нет как "явления", многим этого очень не хватет. (Особенно программистам которые пришли в JavaScript с других языков, не будем называть каких :))
Тем не менее одно неоспоримое преимущество использования TypeScript всё же есть - если это не home project, то он не позволяет при интенсивной разработке "выстрелить себе в ногу", по крайне мере в отношении - типизации и сигнатуры.