Введение в TypeScript
JavaScript
изначально создавался, чтобы делать веб-страницы живыми. Из-за простоты его использования, он завоевал популярность и его начали использовать практически на всех платформах. Код JavaScript строится на скриптах
, которые по задумке должны быть не большими и быстрыми. Разработчики не задумывались, что на JavaScript будут писать приложения с большим количеством кода. В связи с чем у больших приложений, написанных на JavaScript возникают проблемы. Вот некоторые из них:
- Из-за интерпретируемости языка узнать об ошибке можно только после выполнения кода;
- Сложность использования практик объектно-ориентированного программирования;
- Динамическая типизация.
Для решения таких проблем был создан язык программирования TypeScript
.
TypeScript
TypeScript
- язык программирования, представленный Microsoft в 2012 году и позиционируемый как средство разработки веб-приложений, расширяющее возможности JavaScript. TypeScript является обратно совместимым с JavaScript и компилируется в последний. Фактически, после компиляции программу на TypeScript можно выполнять в любом современном браузере или использовать совместно с серверной платформой Node.js. Код на TypeScript выглядит почти так же, как и код на JS, и, если у вас есть опыт frontend-разработки, изучить TypeScript достаточно просто. Особенно учитывая, что вы можете писать JS-код прямо в TS-скриптах.
История
Развитие TypeScript началось в конце 2012 года. Хотя он зародился в компании Microsoft, и его фактическим создателем является программист Андерс Хейлсберг
, так же известный как создатель таких языков как Delphi, C#, но данный проект сразу стал развиваться как OpenSource. И уже с самого начала новый язык стал быстро распространяться в силу своей гибкости и производительности. Немало проектов, которые были написаны на JavaScript, стали переноситься на TypeScript. Популярность и актуальность идей нового языка привела к тому, что ряд из этих идей в последующем станут частью нового стандарта JavaScript. А новая версия одного из популярнейших фреймворков для Web - Angular 2/4/5/6 полностью написана на TypeScript совместно компаниями Microsoft и Google.
Преимущества TypeScript
TypeScript приносит множество удобств в мир JavaScript, рассмотрим основные его возможности.
Строгая типизация
TypeScript
- это строго типизированный и компилируемый язык программирования. JavaScript - динамически типизированный. Строгая типизация
- это один из вариантов политики работы с типами данных, под собой подразумевает выполнение следующих условий:
- Объект данных всегда имеет строго определенный тип;
- Переменной может присвоится только строго тот же тип данных, что и переменная;
- Операции требуют параметры строго определенных типов;
- Неявное преобразование типов не допускается.
Пример JavaScript:
Переменная fruit
может быть, как строкой, так числом или функцией. Ошибки не возникает. В строго типизированном языке такой код не пройдёт компиляции.
let fruit: string = 'banana'
fruit = 999
console.log(fruit)
Синтаксис :string
перед fruit
означает, что переменной назначается тип string (строка)
. В следующей строке мы ей присваиваем число, что недопустимо.
Компиляция
Одна из неприятностей которую можно встретить при разработке на JavaScript — это опечатка или случайное переопределение глобальной переменной. Что можно обнаружить только на этапе выполнения программы. И это явно не экономит время разработки.
TypeScript при компиляции проверяет код на ошибки, что очевидно ускорит выявление подобных неприятностей.
ООП
TypeScript реализует многие концепции, которые свойственны объектно-ориентированным языкам, как, например, наследование, полиморфизм, инкапсуляция и модификаторы доступа и так далее.
Большие программы
TypeScriptа позволяет быстрее и проще писать большие сложные комплексные программы, соответственно их легче поддерживать, развивать, масштабировать и тестировать, чем на стандартном JavaScript.
OpenSource
TypeScript развивается как OpenSource-проект и, как и многие проекты, хостится на гитхабе. Кроме того, он является кроссплатформенным, а это значит, что для разработки мы можем использовать как Windows, так и MasOS или Linux.
Минусы TypeScript
Разработчики любят этот язык, а некоторые крупные проекты уже переходят на него. Например, популярный фреймворк Angular.JS. Но этого всё равно недостаточно, чтобы он стал таким же востребованным, как JavaScript. Это связано с тем, что разработка веб-приложения на TypeScript стоит дороже и отнимает больше времени.
Особенно если необходимо использовать какую-нибудь библиотеку или фреймворк, которые не портированы на TS. В этом случае разработчикам придётся самостоятельно описывать сигнатуры (указывать типы данных) всех функций и методов — достаточно длительный процесс, учитывая размеры современных библиотек.
Также порог входа в TypeScript выше — чтобы использовать его преимущества, важно знать типы данных и объектно-ориентированное программирование.
Использовать ли TypeScript
Теперь, когда вы знаете о том, что же из себя представляет TypeScript, я попытаюсь сказать в каких случаях нужно, а в каких не стоит его использовать.
Мои доводы очень просты: TypeScript нужно использовать всегда, если вы знаете, что проект будет расти и его нужно будет поддерживать. Переводить ли уже написанные проекты? – точного ответа я вам дать не могу, обычно в таких проектах сложно выкроить время на рефакторинг и уж тем более на переход на TypeScript. Однако, всё же стоит подумать над этим, ведь вы получаете типизацию и возможность использования современных стандартов.
В том случае, если вам заведомо известно, что проект имеет определённые рамки кодовой базы и они малы, то внедрение TypeScript принесёт вам лишь поддержку современных возможностей ECMAScript. Однако помните, что перейти с JavaScript на TypeScript вы можете всегда, а вот наоборот – придётся вручную удалять все типы, либо использовать сгенерированные файлы.
Вопросы
Теперь мы готовы с вами изучать TypeScript, но для того чтобы понять на сколько вы усвоили этот урок пройдите тест в мобильном приложении в нашей школы по этой теме.
Ссылки
Contributors ✨
Thanks goes to these wonderful people (emoji key):
IIo3iTiv | Dmitriy Vasilev 💵 |