Автор оригинала: FreeCodeCamp Community Member.
Прошлым летом мы должны были преобразовать огромную базу кода (18 000+ строк кода) от JavaScript на Teadercript. Я многому научился о сильных и слабостях каждого, и когда имеет смысл использовать один над другим.
Эта статья теперь доступна в Японский и китайский язык .
Когда это имеет смысл использовать TypectScript
Когда у вас есть большая кодовая база
Когда ваша кодовая база огромна, и работает более одного человека в проекте, система типа может помочь вам избежать много распространенных ошибок. Это особенно верно для одностраничных приложений.
В любое время один разрабатыватель может ввести изменения в разрыв, это, как правило, хорошо иметь какой-то механизм безопасности.
Типографы транспортер Откроет самые очевидные ошибки – хотя это не будет волшебно устранить необходимость отладки.
Если ваша кодовая база не все, что большая, она, вероятно, не имеет смысла сделать его больше, добавив аннотации типа. Я преобразовал 180+ файлов из JavaScript в Teadercript, и в большинстве случаев он добавлял примерно на 30% до общего размера кода.
Когда разработчики вашей команды уже привыкли к статически набранным языкам
Если вы или большинство команды поступают с сильно напечатанного языка, такого как C # или Java, и не хотеть проходить через JavaScript, Typebrapt – хорошая альтернатива.
Несмотря на то, что я рекомендую тщательно изучать JavaScript, нет ничего, не позволяя вам использовать TeampScript, не зная JavaScript. На самом деле, Typeyctry был создан тот же парень Кто сделал C #, поэтому синтаксики похожи.
В моей компании у нас была команда разработчиков C #, которые кодировали сложное приложение для рабочего стола в C # и WPF (который в основном является инструментом разработки переднего конца для настольного компьютера). Затем им попросили присоединиться к веб-проекту в качестве полных разработчиков стека. Таким образом, в короткие сроки они смогли изучить Skyscript для переднего конца, а затем используйте свои знания C # для заднего конца.
Teadercript может служить заменой для Babel
Старая Microsoft использовала стандартные инструменты – Java, например – и добавлять их запатентованные нестандартные функции – в этом случае, приводящем к J ++. Затем они попытаются заставить разработчиков выбрать между ними.
Typeyctry – это точно такой же подход – на этот раз для JavaScript. Кстати, это не первая вилка Microsoft JavaScript. В 1996 году они развевали JavaScript для создания Jscript Отказ
Хотя это менее распространенное использование, это технически возможно транпировать код ES6 в ES5, используя Teamprict Transpiler. Это возможно, потому что ES6 по существу является подмножеством Tymdercript и TeampScript транспортер генерирует код ES5.
Транбилер TeampScript генерирует довольно читаемый код JavaScript (ECMAScript 5) в качестве вывода. Это было одной из причин, по которой угловая 2 команда выбрала TyplectScript на собственном языке Google Dart.
Кроме того, у TypeScript есть несколько классных функций, которые не являются в ES6, например, enums и возможность инициализации переменных элементов в конструкторе. Я не большой поклонник наследства, но я нахожу полезным иметь Публичные, частные, защищенные и абстрактные Ключевые слова в классах. Tymdercript имеет их и ES6 не.
Наши разработчики C # подумали, что это супер удивительно, чтобы иметь возможность написать функцию лямбда в качестве тела метода – который устраняет головные боли, связанные с это ключевое слово.
Когда библиотека или рамки рекомендуют Shamecript
Если вы используете угловую 2 или другую библиотеку, которая рекомендует TeampScript, пойти на него. Посмотрите на Что эти разработчики должны сказать после использования угловых 2 в течение шести месяцев.
Просто знайте, что – даже если TypeScript можно использовать все библиотеки JavaScript из коробки – если вы хотите хорошие синтаксические ошибки, вам нужно будет добавлять определения типа для этих библиотек внешне. К счастью, хорошие парни на Определенныйтипрованный Построили репо, управляемое сообществом с инструментом для этого. Но это все еще один дополнительный шаг, когда вы устанавливаете свой проект
(На боковом примечании: для всех вас фанатов JSX, проверьте TSX .)
Когда вы действительно чувствуете необходимость скорости
Это может прийти к вам как шоку, но код Tymdercript может в некоторых ситуациях выполнять лучше, чем JavaScript. Позволь мне объяснить.
В нашем коде JavaScript у нас было много типовых чеков. Это было приложение Medtech, поэтому даже небольшая ошибка может быть буквально смертельной, если она не имела дело с должным образом. Таким образом, многие функции имели заявления, такие как:
if(typeof name !== 'string) throw 'Name should be string'
С помощью TeadingScript мы могли бы устранить много из этих типов, проверяющих все вместе.
Это особенно показало свое влияние в частях кода, в котором у нас ранее имела узкое место для производительности, потому что мы смогли пропустить много ненужного проверки типа выполнения.
Итак, когда вы лучше без TypeyctScript?
Когда вы не можете позволить себе дополнительный налог трансигации
Нет планов поддерживать Skyscripts в браузерах. Хром сделал несколько экспериментов , но позже отменен служба поддержки. Я подозреваю, что это есть что связано с ненужным временным расходом.
Если кто-то хочет учебные колеса, они могут их установить. Но велосипеды не должны приходить с постоянными тренировочными колесами. Это означает, что вам всегда придется транспортировать ваш код TeampScript перед запуском в браузере.
Для стандартных ES6 это совершенно другая история. Когда ES6 поддерживается большинством браузеров Текущий трансимация ES6 до ES5 станет ненужным (обновление: Да действительно !).
ES6 – это самое большое изменение на языке JavaScript, и я считаю, что большинство программистов будут просто содержать с ним. Но эти смелые немногие, кто хочет попробовать следующую версию экспериментальных функций JavaScript, или функции, которые еще не реализованы на все браузеры – им все равно понадобится транпили.
Без трансигации вы просто измените файл и обновите браузер. Вот и все. Нет Смотреть, транспортировка по требованию, или Система сборки необходимы.
Если вы выбираете TeampScript, вы получите дополнительную дополнительную бухгалтерскую службу для определений типов для ваших библиотек и каркасов JavaScript (с помощью определенного размещения или записи собственного типа аннотации). Это то, что вам не нужно делать для чистых проектов JavaScript.
Когда вы хотите избежать странных чехлов отладки
SourceMaps облегчает отладку TeampScript, но статус-кво не идеально. Есть действительно раздражающие и запутанные краевые случаи.
Кроме того, есть некоторые проблемы отладки «Это» ключевое слово и свойства, прилагаемые к нему (подсказка: «_Эта» работает в большинстве случаев). То есть потому, что SourceMaps в настоящее время не имеет хорошей поддержки для переменных – хотя это может измениться в будущем.
Когда вы хотите избежать потенциальных штрафов производительности
В нашем проекте у нас было 9 000+ строк добрых добрых добрых es5 JavaScript, которая доставила Pure Horse Power Power 3D WebGL Canvas. Мы сохранили это таким образом.
TradeCript Transpiler (так же, как Babel) имеет функции, которые требуют генерирования дополнительного кода (наследство, Enum, Generics, Async/await и т. Д.). Независимо от того, насколько хороши ваш транспортер, он не может превзойти оптимизации хорошего программиста. Поэтому мы решили сохранить его в простых ES5 для простоты отладки и развертывания (без транспиляции).
То, что говорится, что наказание производительности, вероятно, незначительно по сравнению с преимуществами системы типа и более современным синтаксисом для большинства проектов. Но есть случаи, когда миллисекунды и даже микросекундные вещества, и в тех случаях транспортировка любого рода не рекомендуется (даже с Вавилом, CoffeeScript, Dart и т. Д.).
Обратите внимание, что Teadercript не добавляет какой-либо дополнительный код для проверки типа выполнения. Вся проверка типа происходит при транспортировке времени, и аннотации типа удаляются из сгенерированного кода JavaScript.
Когда вы хотите максимизировать ловкость вашей команды
Быстрее настроить что-то в JavaScript. Отсутствие системы типа делает ловкость и простоту изменения вещей. Это также облегчает сломать вещи, поэтому убедитесь, что вы знаете, что вы делаете.
JavaScript более гибкий. Помните, что одно из основных случаев использования для системы типа – это трудно сломать вещи. Если TypeScript Windows, JavaScript – Linux.
На земле JavaScript вы не получаете тренировочные колеса системы типа, а компьютер предполагает, что вы знаете, что вы делаете, но позволяет ездить намного быстрее, а маневрировать легче.
Это особенно важно отметить, если вы все еще находитесь в фазе прототипирования. Если это так, не тратьте свое время с помощью Teadercript. JavaScript намного более гибкий.
Помните, что TypectScript – это суперсетка JavaScript. Это означает, что вы можете легко преобразовать JavaScript на Teamplect позже, если вам нужно.
Мои предпочтения на JavaScript VS Typeyctry
Там нет ни одного лучшего языка в целом. Но для каждого индивидуального проекта, вероятно, существует один объективно лучший язык и библиотека, а также структура и база данных и операционная система и … Вы получаете изображение.
Для нашего проекта имел смысл использовать TeampScript. Я пытался ревертировать некоторые из моих хобби проектов на Typscript, но он не стоил усилий.
Я лично люблю 5 вещей о TeampScript:
- Он полностью совместим с ES6. Это действительно приятно видеть ярмарку Microsoft с другими браузерами. Наша экосистема может извлечь выгоду из сильного соперника в Google, Mozilla и Apple. Microsoft тратит серьезную энергию на нее – например, написание Визуальный студийный код С нуля с помощью Tymdercript на Google Chrome из всех платформ.
- Система типа не является обязательной. Исходя из фона C и Java, я обнаружил отсутствие системы типа в JavaScript. Но я ненавидел проигрышное время, когда я столкнулся с глупыми жуками во время выполнения. Tymdercript позволяет мне избежать многих общих ошибок, чтобы я мог сосредоточить свое время на исправлении настоящих сложных. Это хороший баланс. Мне это нравится. Это мой вкус. Я использую типы всякий раз, когда я могу, потому что это дает мне спокойствие. Но это я. Если я использую TypebScript, я не хочу ограничивать себя своими функциями ES6.
- Код JavaScript, который выходит из Teamprict Transpiler, очень читается. Я не вентилятор SourceMaps, поэтому я делаю большую часть своей отладки на сгенерированном JavaScript. Это абсолютно потрясающе. Я могу полностью понять, почему угловые 2 Выбрал Tymdercript через DART Отказ
- Опыт разработки типографии фантастический. VS код Очень умно при работе с JavaScript (некоторые могут спорить, это самые умные js IDE). Но TypeScript нажимает пределы всего нового уровня. Особенности автозаполнения и рефакторинга в VSCode работают намного точнее, и это не потому, что IDE – Super Smart. Это все благодаря типографии.
- Аннотации типа похожи на базовую документацию на уровне. Они объявляют тип данных о том, что каждая функция ожидает, их результаты и различные другие намеки, такие как
readly
,публичный
илиЧастный
атрибуты. По моему опыту, пытаясь реформировать код JavaScript на TeampScript, я обычно в конечном итоге с более чистым кодом с более приятной структурой. На самом деле написание Tymdercript улучшилось, как я пишу простой JavaScript.
Typeyctry – это не ответ на все. Вы все еще можете Напишите ужасный код в этом.
Художественные ненавистники ненавидят, либо из-за страха на пути или потому, что они знают кого-то, кто знает кого-то, кто этого боится. Жизнь продолжается и TypeyScript представляет Новые функции к его сообщество в любом случае.
Но, как и отреагируют, TypeScript является одним из тех влиятельных технологий, которые подталкивают границы нашего веб-разработки.
Используете ли вы Tymdercript или нет, это не повредит, чтобы пробовать его, чтобы развить свои собственные мнения на нем. Он имеет кривую обучения, но если вы уже знаете JavaScript, это будет гладкий.
Вот и онлайн в реальном времени транспортер TS С некоторыми примерами, которые позволяют сравнить ThereScript Code с его эквивалентным кодом JavaScript.
Вот быстрый Учебное пособие и а Очень хорошее руководство , но я больше Языковая ссылка своего рода парень. Если вам нравится видео, вот Курс из Удемии Отказ
Джон Папа имеет Краткая статья О ES5 и Typeyctry.
Есть Интересное исследование Это показывает все равные, тип типа уменьшает ошибки на 15%.
О, и если вы хотите, чтобы идти на боковую миссию, прочитайте Почему программирование – лучшая работа в мире Отказ