И почему это веселее, чем JavaScript?

Вам интересно, из-за чего суета вокруг TypeScript? И стоит ли вкладывать время и силы? Или стоит ли использовать его в своем проекте? Если это так, вы пришли в нужное место.

Позвольте мне рассказать вам мою историю. Несколько лет назад я пытался изучить JavaScript.

Я уже программировал на C и C++, LUA, ActionScript и Python… так что на самом деле я еще не начинал свой путь программирования. Но я сменил работу, и часть кодовой базы была на JavaScript, и я пытался понять, откуда взялась ошибка, поэтому я начал пытаться понять, что происходит.

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

И в некотором смысле это странно.

Потому что TypeScript в некотором смысле представляет собой набор ограничений. Это ограничивает то, что вы можете сделать. Он заставляет вас следовать правилам, которые добавляются поверх JavaScript. И все же для меня TypeScript — это весело… в отличие от JavaScript.

Почему?

Что такого в TypeScript, что делает его приятным? И не только по моему мнению, но и по мнению тысяч разработчиков, которые ответили на опрос разработчиков Stack Overflow и поставили TypeScript на третье место среди самых любимых языков. (И кстати, что это говорит о нашем мозге и о том, как он работает?)

Это нелогично. Но мы собираемся исследовать его вместе.

  • Во-первых: что такое TypeScript и чем он полезен?
  • Во-вторых: почему TypeScript весело? Что делает его забавным, в отличие от JavaScript, по крайней мере, для меня?
  • В-третьих: как я изучил TypeScript и JavaScript с помощью TypeScript и почему Typescript — хороший выбор для изучения.

Что такое TypeScript?

TypeScript — это надмножество JavaScript. Это 1/ дополнительный синтаксис поверх синтаксиса JavaScript, который 2/ преобразуется в JavaScript и 3/ ожидает обновлений в JavaScript.

Что это значит?

Ну, во-первых, любой допустимый синтаксис JavaScript является допустимым синтаксисом TypeScript. Если у вас есть страница с кодом JavaScript, измените расширение файла с .js на .ts и «вуаля!» : действительный код TypeScript! (за исключением некоторых случайных исключений/ошибок, таких как функция .at для массивов)

Во-вторых, TypeScript преобразуется в JavaScript. Что это значит? На базовом уровне это означает, что в конце концов код TypeScript проходит через компилятор и выводится как код JavaScript. И _that_ это то, что выполняется.

Это означает, что все, что может сделать JavaScript (а JavaScript может много), TypeScript может сделать тоже.

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

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

И это, безусловно, то, что я испытал на собственном опыте.

Как это делает TypeScript? Ну, это основной вопрос, не так ли! Каковы составляющие лучшего опыта разработки, который обеспечивает TypeScript? Что делает TypeScript интересным?

Что делает TypeScript интересным? (Почему бы просто не использовать JavaScript?)

TypeScript улучшает процесс разработки JavaScript двумя способами.

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

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

TypeScript добавляет тип в кодирование на JavaScript. (В названии есть подсказка).

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

И быстрее приятно. Как лучше.

Гао, Бёрд и Барр исследовали, как аннотации типов могут обнаруживать ошибки в JavaScript, и нашли среднее значение 15%. Проработав более 15 лет со многими свободно типизированными языками (в первую очередь с LUA, Python и JavaScript), я бы сказал, что 15% — это недооценка.

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

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

И это приятно и освежает, когда вы потратили какое-то время на борьбу с проблемами совместимости JavaScript.

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

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

Что делает TypeScript хорошим выбором для использования и изучения?

JavaScript странный.

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

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

Лично я выучил JavaScript намного быстрее с помощью TypeScript. Потому что ментальная модель TypeScript была мне понятнее. Потому что моя IDE указала бы мне правильное направление и помогла бы выполнить мою задачу намного быстрее. Это укажет на мои ошибки.

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

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

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Посетите наш Community Discord и присоединитесь к нашему Коллективу талантов.