Должен ли я использовать Traceur вместо Typescript для ES5, но быть готовым к ES6
Я работаю над большой кодовой базой, которая может принести пользу Typescript, но, поскольку в конечном итоге мир перейдет на ES6, следует ли мне направить разработку в сторону Traceur?
Я не хочу менять реализации Typescript для того, чтобы нацеливаться на ES6 (когда он будет готов), поэтому я чувствую, что теперь нужно продолжить с Traceur.
Кто-нибудь может посоветовать?
6 ответов
Я определенно не согласен с мнением, что TypeScript и Traceur настолько различны, TypeScript - это ES5 с типами, а Traceur - только о ES6.
С одной стороны, в настоящее время разрабатывается совместимый с ES6 TypeScript 2.0. С другой стороны, в Traceur есть несколько функций, помеченных как экспериментальные в документах, а именно типы и аннотации. И оказывается, что типы очень похожи на типы TypeScript, тогда как аннотации не имеют отношения к ES6 и TypeScript. Так что Traceur - это больше, чем просто ES6, и для этого уже есть название: AtScript. Да, у нас есть другое расширение языка:-)
Есть хороший слайд из презентации Miško Hevery, который показывает, что на самом деле здесь происходит, полностью действительный, как только выйдет TypeScript 2.0:
Поэтому, что бы вы ни решили использовать, важно отметить: это подмножества, вы можете написать ES5/ES6 JS, и это будет действительный код TypeScript, вы можете написать TypeScript и это будет действительный код AtScript.
Возвращаясь к вашему вопросу, я бы посоветовалначать с ES6, используя Traceur с отключенными экспериментальными функциями (теперь он довольно стабилен) и расширять его по мере необходимости, поскольку это не столь радикальное решение, не блокирует вас. и оставляет место для движения в будущем.
UPD: В начале 2015 года я бы также рекомендовал обратить внимание на проект 6to5 (переименованный в Babel) как альтернативу Traceur. Он движется очень быстро и предоставляет ряд полезных функций, таких как читабельность сгенерированного кода и лучшая поддержка node.js и систем сборки.
У TypeScript и Traceur совершенно разные цели, и они несопоставимы с тем, как вы пытаетесь их сравнить.
TypeScript - это расширенный набор EcmaScript, который добавляет строгую типизацию. Он включает в себя некоторые функции из ES6, но его основная цель - добавить строгую типизацию к языку (в то же время выравнивая с ES6), а не обеспечивать поддержку ES6.
Traceur, напротив, является компилятором будущего от EcmaScript к текущему EcmaScript. Это ничего не добавляет к языку, который еще не предложен для следующей версии EcmaScript.
Если вы просто хотите написать EcmaScript 6 сегодня, используйте Traceur. Если вам нужна необязательная строгая типизация и все сопутствующие преимущества, а также некоторые функции ES6, используйте TypeScript.
К сведению, следующая версия (2.0) машинописного текста в разработке ориентирована на совместимость с ES6: http://typescript.codeplex.com/wikipage?title=Roadmap
Обновленный пост здесь:
http://blogs.msdn.com/b/typescript/archive/2014/10/22/typescript-and-the-road-to-2-0.aspx
От TypeScript 1.5 к TypeScript 2.0
Когда мы смотрим на выпуск 2.0, мы концентрируемся на двух целях в дополнение к нашей главной цели - привнести хороший инструментарий в разработку JavaScript. Во-первых, чтобы соответствовать ES6. Выравнивание с ES6 позволяет TypeScript стать надмножеством следующего JavaScript, открывая путь для работы с новыми шаблонами кода, такими как деструктурирование, строковые шаблоны, обещания, итераторы и многое другое в дополнение к функциям, которые уже поддерживает TypeScript, таким как классы и лямбда-функции. Мы также работаем с командами Flow и Angular, чтобы убедиться, что TypeScript - лучший язык для работы с более широким спектром библиотек, включая декларативные инфраструктуры, такие как предстоящий выпуск Angular 2.0.
Я определенно рекомендовал бы идти по маршруту ES6.
Если вы хотите ответить на этот вопрос, посмотрите видео Tagtree о возможностях ES6.
Чтобы увидеть строки шаблона, синтаксис стрелок и структуру, взгляните на эту бесплатную обучающую заставку tagtree, регистрация не требуется.
Для крупномасштабной системы я бы определенно рекомендовал переходить с машинописи.
Когда у вас есть команда, работающая вместе, машинопись даст вам все преимущества современного компьютерного языка с совместимостью с es6 (на основе дорожной карты Microsoft), но со строгими преимуществами при наборе текста и дополнении кода.
И у Traceur, и у Typescript есть очень похожие функции, с некоторыми плюсами и минусами.
Я считаю, что основными вопросами, на которые нужно ответить, проанализировать и сравнить более глубоко, являются: "Кто является его сторонниками?" и "Что является историческим для каждого из них?".
Q1: Ну, обе это крупные и авторитетные компании с большими инвестициями в технологии, рабочая сила, чтобы дать будущее своим транспортным средствам. Google отстает от Traceur, а Microsoft отстает от Typescript.
Q2.1: Google имеет давнюю историю как сильный сторонник сред с открытым исходным кодом, таких как Chromium (база браузеров с открытым исходным кодом Google Chrome) и тысяч доступных бесплатных API, почти все из которых основаны на открытых стандартах. Traceur следует той же логике, следуя рекомендациям спецификации ECMAScript 6, опережая ее и обеспечивая ее совместимость в будущих версиях.
Q2.2: Microsoft имеет историю охвата стандартов и расширения их проприетарных, создавая зависимость от клиентов в их платформе и не уважая общее видение стандартизации других игроков рынка. Основная цель Typescript - совместить другие представленные на рынке компиляторы с синтаксисом и функциями вашего компилятора JScript.NET, а не с ECMAScript 6. Любое упоминание о ECMA - просто "сахар для муравьев".
Типизированный синтаксический анализ в реальном времени и расширенное завершение кода Typescript являются значительным преимуществом для небольших проектов, но более крупные проекты должны принимать правильное решение во время определения архитектуры, в противном случае весь проект может быть скомпрометирован устаревшим или прекращенным компилятором и не соответствующим стандартам. в зависимости от уникального поставщика.
Однако многие функции ECMAScript 6 только реализованы в текущих версиях Firefox 33 и Chrome 38 (в 2014-10).