Обложка: Почему вам стоит изучить язык программирования TypeScript?

Почему вам стоит изучить язык программирования TypeScript?

Сергей Отморский
Сергей Отморский

Ведущий разработчик Usetech

Меня зовут Сергей Отморский, я ведущий разработчик барнаульского офиса компании Usetech. Имею более 10 лет опыта работы в качестве ИТ-разработчика, включая разработку полного стека и глубокие знания в области. технологий .NET. В этой небольшой статье я выделил основные моменты, которые должны перевесить чашу весов в сторону TypeScript при выборе языка программирования.

1. TypeScript очень прост

Я прочитал весь handbook за один вечер и уже на следующий день начал использовать TypeScript в новом проекте. TypeScript компилируется в EcmaScipt/JavaScript, но добавляет проверки кода на ошибки ещё до выполнения. Поэтому изучение JavaScript через TypeScript (TS) будет происходить быстрее, чем изучение самого JavaScript.

2. Переход с JS на TS делает жизнь проще

Грубые ошибки, сделанные в процессе модификации кода, видны сразу, а не во время выполнения. Особенно это помогает с теми участками кода, которые выполняются при соблюдении хитрых условий. Никаких больше ‘X’ is not a function.

Когда много лет назад мне предложили помочь с какими-нибудь простыми задачами frontend-команде, я не представлял какой это кошмар модифицировать JS код. Добавил параметр в функцию, но не заметил один из вызовов?! Узнаёшь об этом только когда начнешь выполнять код. Если повезёт, конечно. Вызов, может быть, внутри хитрого if выражения или вообще притворяться что так и надо. Если таких ошибок несколько и подряд, то, в лучшем случае, удастся поймать первую из них и проверять сначала. Хоть я и люблю разнообразие, но от JS задач я начал отказываться.

С TS все совсем наоборот, мне даже нравится. Код, затронутый модификациями, виден сразу в среде разработки, больше не надо внимательно самому вглядываться.

3. Универсальность

На TypeScript можно программировать почти всё что угодно: мобильные и десктоп приложения, бек и фронт части веб-сервисов.

4. Академический интерес

Несмотря на свою простоту, TypeScript позволяет делать удивительные вещи. Например, написать генератор типов, который может найти выход из лабиринта на этапе компиляции https://github.com/ronami/meta-typing.

5. Экосистема

У JS/TS огромное комьюнити. Существует много готовых открытых решений: поддержка, мемасы. В TS можно использовать JS код и можно объяснить TS как ведет себя JS код, добавив type definitions. Для многих популярных JS-only библиотек уже существуют type definitions https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types

6. Удобство

Своя удобная песочница, в которой можно протестировать в какой JS превращается TS. На https://www.typescriptlang.org/play можно попробовать написать и запустить TS код прямо из браузера, ничего не настраивая у себя локально

7. Может пригодиться и в повседневной жизни

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

Однажды меня спросили, могу ли я набрать максимальную скидку в магазине. Размер скидки зависел от результата мини-игры, в которой человечек ползет вверх по веревке если кликнуть мышкой, и сползает вниз постоянно.

F12 -> 

var clicksNumber = 1000000;
var element = $0;
var click = () => setTimeout(() => { element.click(); clicksNumber--; if(clicksNumber > 0) { click() } });
click()

Человечек взлетел так высоко что пробил монитор, потолок и улетел в открытый космос. 🚀

8. Хорошая система вывода типов

type foo = {
  t: 'foo',
  value: number
}
type bar = {
  t: 'bar',
  value: number[]
}
function fizz(bazz: foo | bar) {
  if(bazz.t === 'bar') {
     bazz.value.length// <- Вот тут TS поймет что тип value - массив чисел из-за условия выше.
  }
}

9. Зачастую новые возможности JS доступны в TS раньше, чем в самом JavaScript

***

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

А вы используете TypeScript в своих проектах?