Какая мотивация стоит за TypeScript?

21

У нас был JavaScript, затем у нас был Flash, затем был Silverlight, а затем HTML5 передал их всем.

Так что же мотивирует TypeScript? Какие проблемы будут решаться и какие улучшения мы получим с помощью TypeScript?

http://www.typescriptlang.org/

Геро
источник
15
Как вы думаете, почему HTML5 «обязан» JavaScript?
Берги
1
В том смысле, что каждый должен был согласиться с некоторыми вещами, чтобы найти общий язык => технология и развитие застопорились.
Геро
3
Почему ты упомянул Дарт?
Роберт Харви
Dart, TypeScript или Coffeescript могут быть скомпилированы в JavaScript. И Дарт тоже совсем новый.
Gero
Взгляните на эту статью Николаса С. Закаса
Чарек Томчак,

Ответы:

35

Мне кажется, что это статически типизированный язык на основе классов, который компилируется в JavaScript. Это хорошая идея, и такая же, что и у других.

Преимущества должны быть очевидны для всех, кто разрабатывался как на статически типизированных языках классов, так и на JavaScript:

  • В первую очередь, компилятор. Возможность проверять наличие очевидных проблем с корректностью, вызванных опечатками или небрежностью перед развертыванием, - это то, что большинство разработчиков считают само собой разумеющимся, пока им не придется заниматься веб-разработкой, а затем это внезапно вырвано из-под их ног. Браузеры призваны сделать процесс просмотра приятным за счет надлежащих средств тестирования и отладки, а стандартное решение JSLint не заменит реальный компилятор, поскольку оно пропускает некоторые очевидные проблемы с корректностью и смешивает кучу жалоб на проверку стиля в со своими отчетами. Наличие настоящего компилятора - огромный шаг вперед.
  • И по аналогии, система типов . Системы типов улучшают ваш код, облегчая его чтение (вы точно знаете, что передается в функцию и что она может делать, например, просто просматривая список параметров), а также обеспечивая определенную степень корректности при компиляции время. (Если вы ожидаете определенного типа объекта, передача целого числа является ошибкой. JavaScript позволит вам это сделать, а затем он взрывается при попытке запустить его; компилятор с системой типов поймает его и сообщит об ошибке для вы.)

Итак, как мы видим, основная идея очень хорошая. Сказав это, я ничего не могу сказать о самом языке, потому что у меня нет опыта работы с ним. Но я использовал Smart (ссылка выше) и нашел его невероятно мощным и полезным инструментом для веб-разработки.

Мейсон Уилер
источник
7
Это больше похоже на расширенный набор JavaScript, чем на новый язык, который компилируется в него.
Даниэль Литтл
2
Да, строгий тип облегчает программистам.
Эдвин Ип
13
TypeScript статически типизирован, а не строго типизирован.
Фентон
15

Насколько я вижу, есть несколько веских причин для использования TypeScript. Прежде всего, как сказал Мейсон Уилер, компилятор . Вернее, все проверки, выполняемые компилятором. JSLint и другие инструменты полезны, но пропускают некоторые проблемы и иногда просто ошибочны. Я, конечно, приветствую это «новшество».

Затем существует реальная система типов , улучшающая читабельность и обеспечивающая правильность типов. Ведь это увеличивает скорость разработки.

Для меня одна из замечательных вещей - поддержка инструментов . Это, вероятно, побочный эффект системы типов, но, тем не менее, здорово. И действительно необходимо, так как текущая поддержка инструментов JavaScript не полезна.

TypeScript пытается расширить JavaScript . Компилятор генерирует действительно хороший JavaScript. И в дополнение к этому, он следует предложениям ECMAScript 6 . (Например, синтаксис функции стрелки , значения параметров по умолчанию , модули и т. Д.

Это облегчает работу с модулями и классами . На самом деле можно и довольно часто работать с классами и модулями в JavaScript, но это требует некоторого количества стандартного кода. И это не очень легко читать. TypeScript позволяет писать операторы класса, интерфейса и модуля так же, как в Java или C #, что намного проще, если вы спросите меня.

Но в конце концов, это все еще просто JavaScript . Нет необходимости изучать новый язык или синтаксис. Единственное, что он добавляет, - это необязательная система типов (которая хороша и просрочена).

Затем есть «библиотека определений» , что означает, что я могу использовать все мои библиотеки JavaScript без переписывания или даже их исправления. Тем не менее, у меня есть дополнительная система типов сейчас.

Я обязательно попробую!

И последнее, что нет конкуренции между HTML5 и TypeScript. Но это другая история.

Бруно Шеппер
источник
5

У нас был JavaScript, затем у нас был Flash, затем был Silverlight, а затем HTML5 передал их всем.

Это просто НЕ правда . Html5 не владеет ими, он представляет новые наценки, которые упрощают использование мультимедиа, и исследует преимущества браузеров новой эры (например, использование аппаратного ускорения при рендеринге html).

Так что же мотивирует TypeScript?

Мотивация может быть обусловлена ​​причинами его использования. Все функции TypeScript, такие как статическая проверка, навигация на основе символов, завершение операторов и рефакторинг кода, являются очень вескими причинами для рассмотрения.

Кроме того, он предлагает классы, модули и интерфейсы, помогающие создавать надежные компоненты. Эти функции доступны во время разработки для высоконадежных приложений, но они скомпилированы в простой JavaScript.

Юсубы
источник
HTML 5 не является обязательным условием для аппаратного ускорения. Большинство браузеров делают это с разметкой HTML5 или без нее
Neil N
Мое утверждение указывает на то, что аппаратное ускорение - это функция, которую браузер предоставляет не в формате HTML5.
Юсубов
3

Он может рассматриваться как инструмент для управления разработкой javascript, а не как полностью новый язык, который компилируется в JS. Он не хочет быть языком разработки на стороне сервера, таким как Dart, и не имеет другого синтаксиса, такого как CoffeeScript. Он не хотел брать популярный язык (и его базовую библиотеку) и компилировать его в JS, такой как GWT или script #. TypeScript даже следует тому же синтаксису «класса», предложенному для следующей версии JS.

Я думаю, что большая часть веб-разработки сегодня выполняется с использованием реального JavaScript, только на стороне клиента. Языки или фреймворки, такие как Dart, GWT не подходят для этого. Если вы перейдете на coffeescript, появится новый синтаксис. И вы должны понимать как coffeescript, так и JS. В то время как TypeScript просто добавляет несколько дополнительных функций, ориентированных на тип, интегрированных в JS, которые спасают разработчиков от ошибок, связанных с типом (что составляет большую часть ошибок JS), и дают инструментам разработки больше информации о намерениях разработчиков.

Этот подход не нов. Перейдите в раздел «Статическая печать»

Эта статья адресована вашему запросу - http://www.eweek.com/developer/microsoft-delivers-typescript-a-better-javascript-for-big-apps/

Gulshan
источник
0

Я думаю, что это попытка превратить общий ненадежный кусок дерьма (javascript) в проприетарный язык, который на самом деле можно использовать для значительных проектов.

Его следует сравнивать с GWT, который имеет схожий набор целей, но использует более чистый подход, делая javascript не частью языка; и с Java-апплетами или Flash, которые используют очень чистый подход для определения полной среды выполнения, независимой от браузера.

Ваше мнение может отличаться, но я думаю, что оно обречено, поскольку оно зависит от того, какие браузеры изначально предоставляют (различные, несовместимые) реализации javascript и модели DOM.

ddyer
источник
5
Во-первых, это не собственность, это уже открытый стандарт. Во-вторых, это больше похоже на Dart, чем на GWT / ScriptSharp (хотя и похоже).
Даниэль Литтл
1
Вероятно, в этом нет никакого способа победить - если Microsoft не контролирует его, он станет еще одним убогим языком с большим количеством вариантов, и он все еще зависит от меняющихся песков javascript и DOM
ddyer
1
Вы говорите как кто-то, кто, возможно, немного огорчился из-за своих навыков в Flash и / или Java, будучи значительно менее актуальным из-за текущего популярного стека HTML5 / JS.
Грэм
3
-1 Значит, тебе не нравится JavaScript. Это ваше заявление, в основном.
Бруно Шэппер
2
Справедливо, и поскольку это основа для машинописи, я думаю, что машинопись основана на плохой основе. Это не обязательно смертельно, но это мир боли.
ddyer