fbpx

TypeScript для начинающего программиста

TypeScript для начинающего программиста

Поздравляем вас с выбором TypeScript в качестве одного из ваших первых языков — вы уже приняли правильное решение!

Вы, вероятно, уже слышали, что TypeScript является «разновидностью» или «вариантом» JavaScript. Отношения между TypeScript (TS) и JavaScript (JS) довольно уникальны среди современных языков программирования, поэтому изучение этих отношений поможет вам понять, как TypeScript дополняет JavaScript.

Что такое JavaScript? Краткая история

JavaScript (также известный как ECMAScript) начал свою жизнь как простой язык сценариев для браузеров. В то время, когда он был изобретен, предполагалось, что он будет использоваться для коротких фрагментов кода, встроенных в веб-страницу — написание более нескольких десятков строк кода было бы несколько необычным. Поэтому ранние веб-браузеры выполняли такой код довольно медленно. Однако со временем JS становился все более популярным, и веб-разработчики начали использовать его для создания интерактивного опыта.

Разработчики веб-браузеров отреагировали на рост использования JS оптимизацией своих механизмов выполнения (динамическая компиляция) и расширением возможностей (добавление API), что, в свою очередь, заставило веб-разработчиков использовать его еще больше. На современных веб-сайтах ваш браузер часто запускает приложения, состоящие из сотен тысяч строк кода. Это долгий и постепенный рост «веба», начинавшегося как простая сеть статичных страниц и превратившегося в платформу для богатых приложений всех видов.

Более того, JS стал достаточно популярным, чтобы использоваться вне контекста браузеров, например, для реализации JS-серверов с помощью node.js. Природа JS «работать везде» делает его привлекательным выбором для кросс-платформенной разработки. В наши дни есть много разработчиков, которые используют только JavaScript для программирования всего своего стека!

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

Оператор равенства JavaScript ( == ) принуждает свои аргументы, что приводит к неожиданному поведению:

JavaScript также позволяет обращаться к свойствам, которых нет:

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

TypeScript: Статическая проверка типов

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

TypeScript проверяет программу на наличие ошибок перед выполнением и делает это на основе типов значений, это статическая проверка типов. Например, в последнем примере выше есть ошибка из-за типа obj . Вот ошибка, которую обнаружил TypeScript:

Типизированный суперсет JavaScript

Как же TypeScript связан с JavaScript?

TypeScript — это язык, который является надмножеством JavaScript: Поэтому синтаксис JS является легальным TS. Синтаксис относится к тому, как мы пишем текст, чтобы сформировать программу. Например, в этом коде есть синтаксическая ошибка, потому что в нем отсутствует символ ):

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

Однако TypeScript является типизированным супермножеством, что означает, что он добавляет правила о том, как можно использовать различные типы значений. Предыдущая ошибка с obj.heigth не была синтаксической ошибкой: это ошибка использования какого-то типа значения (типа ) неправильным образом.

В качестве другого примера, это код JavaScript, который вы можете запустить в браузере, и он будет записывать значение в журнал:

Эта синтаксически законная программа регистрирует Infinity . Однако TypeScript считает деление числа на массив бессмысленной операцией и выдаст ошибку:

Возможно, вы действительно собирались разделить число на массив, возможно, просто чтобы посмотреть, что получится, но в большинстве случаев это ошибка программирования. Проверка типов в TypeScript разработана таким образом, чтобы пропускать корректные программы и при этом отлавливать как можно больше распространенных ошибок. (Позже мы узнаем о параметрах, которые можно использовать для настройки того, насколько строго TypeScript проверяет ваш код).

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

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

Это означает, что если вы перенесете код из JavaScript в TypeScript, он гарантированно будет выполняться так же, даже если TypeScript считает, что в коде есть ошибки типа.

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

Грубо говоря, как только компилятор TypeScript закончит проверку вашего кода, он стирает типы, чтобы в результате получить «скомпилированный» код. Это означает, что после компиляции вашего кода в результирующем обычном JS-коде нет информации о типах.

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

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

Существует много-много ресурсов, доступных программистам для изучения JavaScript; не стоит игнорировать эти ресурсы, если вы пишете на TypeScript. Например, на StackOverflow примерно в 20 раз больше вопросов с тегом javascript, чем typescript, но все вопросы по javascript применимы и к TypeScript.

Если вы ищете что-то вроде «как отсортировать список на TypeScript», помните: TypeScript — это среда выполнения JavaScript с проверкой типов во время компиляции. Способ сортировки списка в TypeScript — это тот же способ, что и в JavaScript. Если вы найдете ресурс, где используется непосредственно TypeScript, это тоже замечательно, но не ограничивайте себя, думая, что вам нужны специфические для TypeScript ответы на повседневные вопросы о том, как выполнять задачи времени выполнения.

Это был краткий обзор синтаксиса и инструментов, используемых в повседневном TypeScript. Отсюда вы можете:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *