Всем привет! В данной статье я хочу поговорить о типизации в 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
- Неявное приведение типов внутри самого JavaScript (прим: конкатенация)
- Логические ошибки не в типах
Более подробно с этим списком и списком целей вы можете ознакомится здесь
Заключение
В этой статье была разобрана проблема типизации в JavaScript и пути ее решения, также мы затронули TypeScript и цели, которые он преследует.
Если эта статья вам понравилась, то напишите об этом в комментариях и я подготовлю статью для новичков, в которой подробно разберу TypeScript.
#it #web #proweb #frontend #программирование #код #code #top