Главная Категории Контакты Поиск

Введение в TypeScript

Что такое TypeScript и для чего он нужен.

TypeScript ·24.09.2019·читать 9 мин 🤓·Автор: Alex Myzgin

С момента своего появления JavaScript претерпел колоссальный рост, особенно в последние годы.

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

Спрос на высокопроизводительный, поддерживаемый и надежный JavaScript привел к появлению TypeScript.

Давай подробно рассмотрим цели и преимущества использования TypeScript для любой базы кода - от небольшого проекта до крупного корпоративного.

TypeScript - расширенный набор JavaScript

TC39 - комитет, который регулирует разработку JavaScript, регулярно вводит новые функции в язык с каждой новой версией. Недавно добавленные функции, такие как классы и переменные в области блока, делают стандартный JavaScript более устойчивым. Тем не менее, язык может быть дополнительно улучшен и усилен для обработки очень сложных архитектурных требований надежным и предсказуемым способом. TC39 в своем конвейере владеет функциями, которые помогают достичь этой архитектурной цели, но ему требуется время, чтобы стать частью стандартного языка и поддерживаться всеми основными браузерами.

Поскольку каждая новая версия JavaScript расширяет предыдущую, можно представить «Будущее JavaScript» как надмножество текущей стандартной версии. Придерживаясь данной модели, TypeScript был создан для того, чтобы выступать в качестве расширенного набора JavaScript, который передает будущее языка в руки современных разработчиков. Кроме того, TypeScript интегрирует функции, выходящие за рамки TC39, такие как: проверка типов, универсальные шаблоны и интерфейсы, которые уменьшают уязвимость присутствующие в JavaScript и ускоряют разработку - всё это обеспечивается с помощью абстракций, написанных на JavaScript. Всё, что дает TypeScript, - это удобный синтаксический сахар, который, в конечном итоге, превращается в кроссплатформенный JavaScript.

Давай подробно рассмотрим архитектуру и компоненты TypeScript, чтобы глубже понять его преимущества.

Архитектура TypeScript: цели дизайна

Microsoft разработала TypeScript с учетом конкретных архитектурных параметров, которые позволяют TypeScript полностью и легко интегрироваться с существующим кодом JavaScript, обеспечивая при этом надежные функции, внешние по отношению к JavaScript.

Совместимость JavaScript с TypeScript

Как уже стало понятно, TypeScript - это расширенный набор JavaScript. Это позволяет TypeScript понимать и работать с любым кодом, который является допустимым JavaScript. Любой допустимый код JavaScript является допустимым кодом TypeScript только с несколькими исключениями: обработка необязательных параметров функции и присвоение значения литералу объекта.

Обрати внимание, что TypeScript код не является допустимым кодом JavaScript. TypeScript содержит синтаксис и абстракции, которые не существуют в JavaScript, и использование их с JavaScript вызовет ошибки во время выполнения JavaScript. Однако, стремясь повысить совместимость, разработчики TypeScript согласовывают язык с конвейером ECMAScript. Текущие и будущие предложения ECMAScript учитываются при разработке новых функций TypeScript.

Предоставление проверки типа в JavaScript

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

Чтобы избежать таких проблем во время выполнения, TypeScript был разработан как строго типизированный язык, который выполняет статическую проверку типов во время компиляции в JavaScript. Для гибкости, возможность проверки типов в TypeScript являются необязательными; тем не менее, большинство ключевых преимуществ TypeScript связано с проверкой типов - это основная причина использования TypeScript! Например, проверка типов позволяет использовать слой языкового сервиса языка для создания более совершенных инструментов, которые максимизируют производительность и уменьшат количество ошибок.

Более мощное объектно-ориентированное программирование на JavaScript

Синтаксический сахар, предоставляемый TypeScript, позволит значительно уменьшить объем кода при одновременном повышении его выразительности. TypeScript делает написание класса объектно-ориентированного кода быстрым. Он предоставляет нам классы, интерфейсы и модули, которые позволяют правильно структурировать код в инкапсулированные многократно используемые структуры, что упрощает поддержку и масштабирование. Внутри классов также можно указать уровень видимости свойств и методов класса, используя предоставленные модификаторы TypeScript - public, private и protected. Есть много других абстракций, которые сделают тебя, как разработчика, более продуктивным.

Отсутствие дополнительных трудностей

Как разработчики TypeScript, мы работаем в двух разных контекстах - дизайн и исполнение. В контексте дизайна мы используем TypeScript напрямую для написания приложения. Поскольку TypeScript не поддерживается ни одним браузером, то для того, чтобы заставить наш код работать, он должен стать кодом JavaScript. В контексте выполнения весь наш код TypeScript компилируется в код JavaScript, а затем выполняется его целевой платформой - например, браузером. Браузер не имеет ни малейшего представления, что этот код скомпилирован - он выглядит так же, как обычный JavaScript, который он умеет выполнять. Следовательно, TypeScript не накладывает никаких дополнительных трудностей для приложения. Чтобы браузер получил действительный код выполнения, компилятор TypeScript берёт функции TypeScript и внедряет их в любую цель компиляции JavaScript по нашему выбору - это может быть даже ES3! Ты уже знаешь, есть некоторые функции TypeScript, такие как проверка типов и интерфейсы, которых просто не существует в JavaScript и они не могут быть реализованы. Эти неподдерживаемые функции просто удаляются из скомпилированного кода - это называется стиранием типов. Их удаление не влияет на функциональность кода, потому что эти уникальные функции предназначены только для того, чтобы помочь TypeScript повысить удобство работы, и они не переопределяют ядро ​​языка JavaScript.

Архитектура TypeScript: компоненты

Архитектура TypeScript аккуратно организована на разных уровнях.

Базовый компилятор TypeScript

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

TypeScript автономный компилятор, TSC

Автономный компилятор TypeScript, часто называемый tsc - это высокоуровневый компилятор, который берет файл TypeScript, .ts и выводит файл JavaScript, .js.

Языковая служба

Этот компонентный слой находится поверх основного компилятора TypeScript и предоставляет функции, необходимые для работы в IDE и текстовых редакторов: завершение операторов, форматирование и выделение кода, подсветка синтаксиса и многое другое. Языковая служба также обеспечивает рефакторинг кода: переименование переменных, отладка и инкрементная компиляция.

Интеграция инструментов

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

Заключение

TypeScript привносит много преимуществ в производительность и в опыт разработчиков. TypeScript не является уникальным для Angular; другие мощные интегрированные среды, такие как React и Vue, начинают использовать TypeScript, чтобы позволить командам разработчиков создавать приложения, которые являются надежными, устойчивыми и масштабируемыми. JavaScript и TypeScript постоянно развиваются, но не конкурируют друг с другом. TypeScript был создан, чтобы дополнять и улучшать JavaScript, а не заменять его. В будущем они могут стать очень схожими по функциям, но пока TypeScript остается статически типизированной альтернативой.

Website, name & logo
Copyright © 2019. Alex Myzgin