HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>12 апр 2022</li>
2 <ul><li>12 апр 2022</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>Рассказываем, почему появился TypeScript, чем он отличается от JavaScript и что надо знать, чтобы стать TypeScript-разработчиком.</p>
4 </ul><p>Рассказываем, почему появился TypeScript, чем он отличается от JavaScript и что надо знать, чтобы стать TypeScript-разработчиком.</p>
5 <p>Иллюстрация: Kristina Clopova / Wikimedia Commons / Colowgee для Skillbox Media</p>
5 <p>Иллюстрация: Kristina Clopova / Wikimedia Commons / Colowgee для Skillbox Media</p>
6 <p>Изучает Python, его библиотеки и занимается анализом данных. Любит путешествовать в горах.</p>
6 <p>Изучает Python, его библиотеки и занимается анализом данных. Любит путешествовать в горах.</p>
7 <p>TypeScript - это язык программирования, разработанный в 2012 году Microsoft. Его создали для того, чтобы обойти ограничения<a>JavaScript</a>в больших проектах: изменили типизацию на статическую, расширили возможности объектно-ориентированного программирования и добавили обратную совместимость с JS. Давайте разберёмся в отличиях вместе: напишем первый код, поговорим про типизацию и узнаем, сколько зарабатывают TypeScript-разработчики.</p>
7 <p>TypeScript - это язык программирования, разработанный в 2012 году Microsoft. Его создали для того, чтобы обойти ограничения<a>JavaScript</a>в больших проектах: изменили типизацию на статическую, расширили возможности объектно-ориентированного программирования и добавили обратную совместимость с JS. Давайте разберёмся в отличиях вместе: напишем первый код, поговорим про типизацию и узнаем, сколько зарабатывают TypeScript-разработчики.</p>
8 <p>Предок TypeScript - популярный в веб-разработке JavaScript. JavaScript появился в 1995 году для создания небольших скриптов на веб-страницах. Это позволило дополнить<a>HTML</a>динамическими элементами, например активными кнопками, формами для регистрации пользователей или проигрывателем видео.</p>
8 <p>Предок TypeScript - популярный в веб-разработке JavaScript. JavaScript появился в 1995 году для создания небольших скриптов на веб-страницах. Это позволило дополнить<a>HTML</a>динамическими элементами, например активными кнопками, формами для регистрации пользователей или проигрывателем видео.</p>
9 <p>Но постепенно с помощью JavaScript разработчики начали делать сложные сайты, что показало проблемы языка программирования. Например, в JavaScript используется динамическая типизация, то есть тип переменных может меняться в процессе выполнения кода, что при большой кодовой базе и нескольких разработчиках часто становится источником ошибок. С начала 2010-х программисты искали инструмент, который помог бы справиться с этими недостатками. Одним из таких инструментов и стал TypeScript.</p>
9 <p>Но постепенно с помощью JavaScript разработчики начали делать сложные сайты, что показало проблемы языка программирования. Например, в JavaScript используется динамическая типизация, то есть тип переменных может меняться в процессе выполнения кода, что при большой кодовой базе и нескольких разработчиках часто становится источником ошибок. С начала 2010-х программисты искали инструмент, который помог бы справиться с этими недостатками. Одним из таких инструментов и стал TypeScript.</p>
10 <p>TypeScript разработали в Microsoft. Первую версию языка компания представила в 2012 году. Его сразу позиционировали как средство разработки веб-приложений, расширяющее возможности JavaScript.</p>
10 <p>TypeScript разработали в Microsoft. Первую версию языка компания представила в 2012 году. Его сразу позиционировали как средство разработки веб-приложений, расширяющее возможности JavaScript.</p>
11 <p>Популярность языка быстро растёт в последние десять лет. Он вошёл в топ-10 языков по версии Octoverse в 2017 году, а в 2021 году уже стал четвёртым по популярности языком и уступил только "старичкам": JavaScript, Python и Java:</p>
11 <p>Популярность языка быстро растёт в последние десять лет. Он вошёл в топ-10 языков по версии Octoverse в 2017 году, а в 2021 году уже стал четвёртым по популярности языком и уступил только "старичкам": JavaScript, Python и Java:</p>
12 Популярность языков программирования<em>Инфографика:</em><a><em>Octoverse</em></a><p>Хотя TypeScript очень похож на JavaScript, между ними есть важные различия. Они и влияют на то, что часть разработчиков выбирают TypeScript.</p>
12 Популярность языков программирования<em>Инфографика:</em><a><em>Octoverse</em></a><p>Хотя TypeScript очень похож на JavaScript, между ними есть важные различия. Они и влияют на то, что часть разработчиков выбирают TypeScript.</p>
13 <p>TypeScript использует статическую типизацию, а JavaScript - динамическую. Но что это значит? Лучше всего разобрать это на примере.</p>
13 <p>TypeScript использует статическую типизацию, а JavaScript - динамическую. Но что это значит? Лучше всего разобрать это на примере.</p>
14 <p>Представьте, что один из разработчиков создал функцию addNum. В коде он указывает типы переменных, показывая, что функция принимает только два числа. Если какой-то программист решит передать вместо числа текст, то в TypeScript появится предупреждение, что так делать нельзя.</p>
14 <p>Представьте, что один из разработчиков создал функцию addNum. В коде он указывает типы переменных, показывая, что функция принимает только два числа. Если какой-то программист решит передать вместо числа текст, то в TypeScript появится предупреждение, что так делать нельзя.</p>
15 <p>JavaScript проигнорирует это и попытается выполнить код. Результат при этом непредсказуем. Посмотрим на один и тот же код на двух языках программирования:</p>
15 <p>JavaScript проигнорирует это и попытается выполнить код. Результат при этом непредсказуем. Посмотрим на один и тот же код на двух языках программирования:</p>
16 <p><strong>TypeScript</strong></p>
16 <p><strong>TypeScript</strong></p>
17 let a: number = 1; let b: number = 2; b='2' console.log('Результат сложения: ' + a + b)<p>Что происходит? Мы создали две переменные и объявили их числами. Если после этого мы попробуем переменной с типом данных "число" присвоить значение в виде текста, то среда разработки сразу выдаст нам ошибку:</p>
17 let a: number = 1; let b: number = 2; b='2' console.log('Результат сложения: ' + a + b)<p>Что происходит? Мы создали две переменные и объявили их числами. Если после этого мы попробуем переменной с типом данных "число" присвоить значение в виде текста, то среда разработки сразу выдаст нам ошибку:</p>
18 Type 'string' is not assignable to type 'number'<p>. То есть мы не можем присвоить текстовое значение числовой переменной.</p>
18 Type 'string' is not assignable to type 'number'<p>. То есть мы не можем присвоить текстовое значение числовой переменной.</p>
19 <p>Последняя команда со сложением двух переменных не будет выполняться.</p>
19 <p>Последняя команда со сложением двух переменных не будет выполняться.</p>
20 <p><strong>JavaScript</strong></p>
20 <p><strong>JavaScript</strong></p>
21 var a = 1; var a = 2; b='2' alert(a+b)<p>Повторяем все действия. Создаём две переменные, а затем меняем одну из них на текст. Что получится в итоге? При выполнении кода мы получим ответ 12! То есть в JavaScript такой код выполняется, но странно: две переменные "склеиваются", а предупреждение об ошибке не появляется.</p>
21 var a = 1; var a = 2; b='2' alert(a+b)<p>Повторяем все действия. Создаём две переменные, а затем меняем одну из них на текст. Что получится в итоге? При выполнении кода мы получим ответ 12! То есть в JavaScript такой код выполняется, но странно: две переменные "склеиваются", а предупреждение об ошибке не появляется.</p>
22 <p>Связано это с тем, что статически и динамически типизированные языки по-разному проводят проверку типов данных. Первые выполняют её во время компиляции, а вторые - в момент исполнения программы. То есть в динамически типизированных языках тип переменных может меняться в ходе выполнения программ, что не всегда хорошо.</p>
22 <p>Связано это с тем, что статически и динамически типизированные языки по-разному проводят проверку типов данных. Первые выполняют её во время компиляции, а вторые - в момент исполнения программы. То есть в динамически типизированных языках тип переменных может меняться в ходе выполнения программ, что не всегда хорошо.</p>
23 <p>В JavaScript используется динамическая типизация. Это неплохо само по себе, но может стать проблемой, если кода много и над ним работают несколько разработчиков. Например, изменения в переменных при выполнении кода могут привести к тому, что какая-то переменная в ходе выполнения кода станет NaN, и программа перестанет работать. Для устранения проблемы придётся тщательно изучить весь код, чтобы понять, где закралась ошибка, приведшая к изменению типа переменной.</p>
23 <p>В JavaScript используется динамическая типизация. Это неплохо само по себе, но может стать проблемой, если кода много и над ним работают несколько разработчиков. Например, изменения в переменных при выполнении кода могут привести к тому, что какая-то переменная в ходе выполнения кода станет NaN, и программа перестанет работать. Для устранения проблемы придётся тщательно изучить весь код, чтобы понять, где закралась ошибка, приведшая к изменению типа переменной.</p>
24 <em>Кадр: мультсериал "Губка Боб Квадратные Штаны"</em><p>В TypeScript типизация статическая. То есть тип переменных не может поменяться в ходе выполнения кода, а значит, разработчики могут быть уверены в статусе переменных.</p>
24 <em>Кадр: мультсериал "Губка Боб Квадратные Штаны"</em><p>В TypeScript типизация статическая. То есть тип переменных не может поменяться в ходе выполнения кода, а значит, разработчики могут быть уверены в статусе переменных.</p>
25 <p>Из-за динамической типизации найти ошибки в JavaScript можно только после окончательного написания кода - его придётся запустить. Это создаёт трудности, так как код может быть большим, а ошибки лучше отлавливать в самом начале, когда это сделать легче.</p>
25 <p>Из-за динамической типизации найти ошибки в JavaScript можно только после окончательного написания кода - его придётся запустить. Это создаёт трудности, так как код может быть большим, а ошибки лучше отлавливать в самом начале, когда это сделать легче.</p>
26 <p>В TypeScript всё проще - проверка проходит прямо в редакторе, то есть выполнение кода для этого не требуется. Это особенность статической типизации, которая облегчает работу.</p>
26 <p>В TypeScript всё проще - проверка проходит прямо в редакторе, то есть выполнение кода для этого не требуется. Это особенность статической типизации, которая облегчает работу.</p>
27 <p>Популярность TypeScript связана с тем, что он не только полностью поддерживает JavaScript, но и компилируется в него при выполнении. Это позволяет обеспечить полную обратную совместимость двух языков.</p>
27 <p>Популярность TypeScript связана с тем, что он не только полностью поддерживает JavaScript, но и компилируется в него при выполнении. Это позволяет обеспечить полную обратную совместимость двух языков.</p>
28 <p>Благодаря этому TypeScript активно используется на проектах, где кодовая база написана на JavaScript. Разработчики могут постепенно заменять старый код на новый без каких-либо трудностей.</p>
28 <p>Благодаря этому TypeScript активно используется на проектах, где кодовая база написана на JavaScript. Разработчики могут постепенно заменять старый код на новый без каких-либо трудностей.</p>
29 <p>TypeScript реализует полноценное объектно-ориентированное программирование (ООП), поддерживая разные концепции: классы, интерфейсы, наследование и многое другое. Это облегчает создание хорошо организованного масштабируемого кода, делая TypeScript отличным выбором для развивающихся проектов.</p>
29 <p>TypeScript реализует полноценное объектно-ориентированное программирование (ООП), поддерживая разные концепции: классы, интерфейсы, наследование и многое другое. Это облегчает создание хорошо организованного масштабируемого кода, делая TypeScript отличным выбором для развивающихся проектов.</p>
30 <p>Использование сред разработки помогает облегчить написание кода. Обычно IDE имеют дополнительные функции, такие как навигация по коду и автодополнение, облегчая написание кода. Также многие редакторы сами отмечают ошибки и предлагают для них исправления. Это помогает писать код быстро и повышает скорость работы программиста.</p>
30 <p>Использование сред разработки помогает облегчить написание кода. Обычно IDE имеют дополнительные функции, такие как навигация по коду и автодополнение, облегчая написание кода. Также многие редакторы сами отмечают ошибки и предлагают для них исправления. Это помогает писать код быстро и повышает скорость работы программиста.</p>
31 <p>Писать на TypeScript можно в любом редакторе, который его поддерживает. Например, WebStorm, VSC, Eclipse или Atom. Никаких ограничений на среду разработки нет.</p>
31 <p>Писать на TypeScript можно в любом редакторе, который его поддерживает. Например, WebStorm, VSC, Eclipse или Atom. Никаких ограничений на среду разработки нет.</p>
32 <p>Рефакторинг - важная часть работы программиста. Если говорить просто, то это улучшение читаемости и облегчение дальнейшей поддержки кода без изменения его функциональности.</p>
32 <p>Рефакторинг - важная часть работы программиста. Если говорить просто, то это улучшение читаемости и облегчение дальнейшей поддержки кода без изменения его функциональности.</p>
33 <p>TypeScript делает этот процесс лёгким. Поскольку IDE хорошо взаимодействует с кодом, написанным на TypeScript, то в распоряжении программиста появляются полезные инструменты навигации внутри кода. Например, среда разработки может подсветить все упоминания и связи отдельной переменной.</p>
33 <p>TypeScript делает этот процесс лёгким. Поскольку IDE хорошо взаимодействует с кодом, написанным на TypeScript, то в распоряжении программиста появляются полезные инструменты навигации внутри кода. Например, среда разработки может подсветить все упоминания и связи отдельной переменной.</p>
34 <p>Кроме того, многие ошибки замечаются автоматически. Например, если программист переименовывает функцию, то может забыть изменить её имя в каком-то месте кода. TypeScript предупредит об этом. Это упрощает и ускоряет рефакторинг, что особенно полезно, когда вы работаете с большими частями кодовой базы.</p>
34 <p>Кроме того, многие ошибки замечаются автоматически. Например, если программист переименовывает функцию, то может забыть изменить её имя в каком-то месте кода. TypeScript предупредит об этом. Это упрощает и ускоряет рефакторинг, что особенно полезно, когда вы работаете с большими частями кодовой базы.</p>
35 <p>Проще всего TypeScript устанавливается через пакетный менеджер npm. Но чтобы установить npm, необходимо установить Node.js :)</p>
35 <p>Проще всего TypeScript устанавливается через пакетный менеджер npm. Но чтобы установить npm, необходимо установить Node.js :)</p>
36 <p>Если у вас Windows, то для дальнейших действий понадобится менеджер пакетов<a>Chocolatey</a>. Если же у вас macOS, то потребуется<a>Homebrew</a>.</p>
36 <p>Если у вас Windows, то для дальнейших действий понадобится менеджер пакетов<a>Chocolatey</a>. Если же у вас macOS, то потребуется<a>Homebrew</a>.</p>
37 <p>Для начала установки Node.js необходимо выполнить команду:</p>
37 <p>Для начала установки Node.js необходимо выполнить команду:</p>
38 <p>В Choco: choco install -y nodejs.install</p>
38 <p>В Choco: choco install -y nodejs.install</p>
39 <p>В Brew: brew install node</p>
39 <p>В Brew: brew install node</p>
40 <p>После этого можно устанавливать TypeScript:</p>
40 <p>После этого можно устанавливать TypeScript:</p>
41 <p>В npm: npm install -g typescript</p>
41 <p>В npm: npm install -g typescript</p>
42 <p>В Yarn: yarn add -g typescript</p>
42 <p>В Yarn: yarn add -g typescript</p>
43 <p>Проверить, установился ли TypeScript, можно командой: tsc -v.</p>
43 <p>Проверить, установился ли TypeScript, можно командой: tsc -v.</p>
44 <p>Если установка прошла успешно, то терминал покажет вам версию TypeScript:</p>
44 <p>Если установка прошла успешно, то терминал покажет вам версию TypeScript:</p>
45 <em>Скриншот: Skillbox Media</em><p>Теперь компьютер готов к работе.</p>
45 <em>Скриншот: Skillbox Media</em><p>Теперь компьютер готов к работе.</p>
46 <p>Посмотрим на TypeScript в работе. Для этого напишем две простые программы: первая - классический "Hello, World!", а вторая - перемножает два числа.</p>
46 <p>Посмотрим на TypeScript в работе. Для этого напишем две простые программы: первая - классический "Hello, World!", а вторая - перемножает два числа.</p>
47 <p>Классическая программа для тех, кто только начинает учить язык программирования. На TypeScript нам понадобится написать всего две строчки:</p>
47 <p>Классическая программа для тех, кто только начинает учить язык программирования. На TypeScript нам понадобится написать всего две строчки:</p>
48 let message: string = 'Hello World' console.log(message)<p>Что здесь происходит? Посмотрим на каждую строку:</p>
48 let message: string = 'Hello World' console.log(message)<p>Что здесь происходит? Посмотрим на каждую строку:</p>
49 <p>let message: string = 'Hello World' → Мы создаём переменную message и говорим, что она будет иметь тип string, то есть содержит текст. Также указываем её содержание - Hello World. Тип переменных указывается всегда, так как TypeScript требует статической типизации.</p>
49 <p>let message: string = 'Hello World' → Мы создаём переменную message и говорим, что она будет иметь тип string, то есть содержит текст. Также указываем её содержание - Hello World. Тип переменных указывается всегда, так как TypeScript требует статической типизации.</p>
50 <p>console.log(message) → выводим содержимое переменной message на экран.</p>
50 <p>console.log(message) → выводим содержимое переменной message на экран.</p>
51 <p>Напишем программу, которая перемножает два числа. Начнём с того, что создадим две переменные. Помним, что в TypeScript статическая типизация, а значит, нам надо явно указать, что эти переменные содержат числа:</p>
51 <p>Напишем программу, которая перемножает два числа. Начнём с того, что создадим две переменные. Помним, что в TypeScript статическая типизация, а значит, нам надо явно указать, что эти переменные содержат числа:</p>
52 let a: number = 12; let b: number = 17;<p>Теперь выводим результат их умножения, но дополним его текстом для лучшей читаемости:</p>
52 let a: number = 12; let b: number = 17;<p>Теперь выводим результат их умножения, но дополним его текстом для лучшей читаемости:</p>
53 console.log('Результат умножения: ' + a * b)<p>Если попробовать вместо числа указать текст, то мы получим ошибку:</p>
53 console.log('Результат умножения: ' + a * b)<p>Если попробовать вместо числа указать текст, то мы получим ошибку:</p>
54 <em>Скриншот: Skillbox Media</em><p><a>Финальный код</a>:</p>
54 <em>Скриншот: Skillbox Media</em><p><a>Финальный код</a>:</p>
55 let a: number = 12; let b: number = 17; console.log('Результат умножения: ' + a * b)<p>На "<a>Хабр Карьере</a>" и hh.ru доступно более 500 вакансий TypeScript-разработчиков. Зарплата зависит от уровня. Джуниорам доступна зарплата от 50 до 100 тысяч рублей, а сеньорам - от 250 до 800 тысяч. Разработчик среднего уровня может рассчитывать на зарплату от 100 до 250 тысяч рублей. При этом зарплатные вилки у JS- и TS-разработчиков практически не отличаются.</p>
55 let a: number = 12; let b: number = 17; console.log('Результат умножения: ' + a * b)<p>На "<a>Хабр Карьере</a>" и hh.ru доступно более 500 вакансий TypeScript-разработчиков. Зарплата зависит от уровня. Джуниорам доступна зарплата от 50 до 100 тысяч рублей, а сеньорам - от 250 до 800 тысяч. Разработчик среднего уровня может рассчитывать на зарплату от 100 до 250 тысяч рублей. При этом зарплатные вилки у JS- и TS-разработчиков практически не отличаются.</p>
56 <em>Скриншот: Skillbox Media</em><em>Скриншот: Skillbox Media</em><p>Но знать только TypeScript - недостаточно даже для первой работы. Вот необходимый минимум:</p>
56 <em>Скриншот: Skillbox Media</em><em>Скриншот: Skillbox Media</em><p>Но знать только TypeScript - недостаточно даже для первой работы. Вот необходимый минимум:</p>
57 <ul><li>TypeScript;</li>
57 <ul><li>TypeScript;</li>
58 <li>HTML / CSS3;</li>
58 <li>HTML / CSS3;</li>
59 <li>один или несколько фреймворков для веб-разработки: React.js, Angular;</li>
59 <li>один или несколько фреймворков для веб-разработки: React.js, Angular;</li>
60 <li>базы данных: PostgreSQL, SQLite;</li>
60 <li>базы данных: PostgreSQL, SQLite;</li>
61 <li>Git, GitHub/GitLab;</li>
61 <li>Git, GitHub/GitLab;</li>
62 <li>Jira или таск-трекеры;</li>
62 <li>Jira или таск-трекеры;</li>
63 <li>часто плюсом к TypeScript требуют и JavaScript.</li>
63 <li>часто плюсом к TypeScript требуют и JavaScript.</li>
64 </ul><p>На зарубежном рынке зарплаты выше. Согласно<a>исследованию Stack Overflow Annual Developer Survey 2022</a>, TypeScript-разработчики - уверенные середнячки по зарплате. Как правило, это 60 тысяч долларов в год до вычета налогов.</p>
64 </ul><p>На зарубежном рынке зарплаты выше. Согласно<a>исследованию Stack Overflow Annual Developer Survey 2022</a>, TypeScript-разработчики - уверенные середнячки по зарплате. Как правило, это 60 тысяч долларов в год до вычета налогов.</p>
65 TypeScript (TS) по уровню зарплат не сильно отличается от большинства языков программирования, находясь на одном уровне с JavaScript, Python, Node.js, Java и другими<em>Инфографика:<a>Stack Overflow Annual Developer Survey 2022</a></em><p>TypeScript - логичное развитие JavaScript. Он помогает справиться с проблемами своего предка, делает его удобнее и безопаснее. При этом между двумя языками сохраняется совместимость, что делает переход между ними довольно простым и плавным. TypeScript - отличный выбор для тех, кто решил заняться веб-разработкой.</p>
65 TypeScript (TS) по уровню зарплат не сильно отличается от большинства языков программирования, находясь на одном уровне с JavaScript, Python, Node.js, Java и другими<em>Инфографика:<a>Stack Overflow Annual Developer Survey 2022</a></em><p>TypeScript - логичное развитие JavaScript. Он помогает справиться с проблемами своего предка, делает его удобнее и безопаснее. При этом между двумя языками сохраняется совместимость, что делает переход между ними довольно простым и плавным. TypeScript - отличный выбор для тех, кто решил заняться веб-разработкой.</p>
66 <a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
66 <a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>