Найти тему
ProWeb

Типизация в JavaScript

Оглавление

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

Меня зовут Антон. Я занимаюсь front-end разработкой и сейчас я расскажу вам о типизации в JavaScript.

Что такое типизация и как она появилась в JavaScript

Изначально JavaScript задумывался как просто язык сценариев, который не должен содержать типизацию в принципе. Но время шло и на этом языке стало появляться все больше программ и крупные IT-гиганты (Яндекс, Mail, Google и т.д.) начали все чаще использовать его в своих проектах. Вместе с ростом популярности, росли и требования к этому языку программирования.

Основные проблемы в JavaScript:

1. Получение информации об ошибка в момент выполнения программы (runtime)

Проблемы с которыми сталкивался каждый
Проблемы с которыми сталкивался каждый

2.Неявное приведение типов

Проблема неявной типизации
Проблема неявной типизации

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

Тогда, в качестве альтернативы этому варианту предложили написать язык программирования, который не заменяет Javascript, а дополняет его, расширяя синтаксис. Такими языками стали язык Flow и всем известный TypeScript.

Так как самым популярным решением проблем с типизацией является TypeScript, то его мы и разберем.

TypeScript: проблемы и их решения

Как же TypeScript решает проблему связанную с обработкой ошибок в runtime? Все очень просто. Если мы попробуем вызывать метод, которого не существует, то TypeScript просто подчеркнет этот код и выведет ошибку с ее подробными описание.

Пример вывода ошибки
Пример вывода ошибки

Также при передачи в функцию какого-то аргумента в TypeScript, вам необходимо указать, что за тип у переданного аргумента. Это облегчает чтение кода и помогает легко изменять функцию в последующем.

Явное указание типа данных
Явное указание типа данных

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

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

При разработке TypeScript компания Microsoft четко определила цели, которые преследовала при создании этого языка.

Цели, которые преследует TypeScript
Цели, которые преследует TypeScript

Однако, вместе с целями были выделены и проблемы, которые TypeScript решить не в состоянии, а именно:

  • Переопределение прототипов и глобальных объектов
  • Код сторонних библиотек не подлежит правилам работы TypeScript
  • Неявное приведение типов внутри самого JavaScript (прим: конкатенация)
  • Логические ошибки не в типах

Более подробно с этим списком и списком целей вы можете ознакомится здесь

Заключение

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

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

#it #web #proweb #frontend #программирование #код #code #top