Одним из недостатков или, возможно, преимуществ JavaScript является то, что, будучи динамически типизированным языком, он избавляет от необходимости оперировать со строгими типами переменных и избегать возвращаемых значений перед ними. Выглядит легко и просто, но есть одно “но”: если вы работаете не в команде и всего лишь с 20 строками кода JavaScript, статическую типизацию можно игнорировать. Тем не менее не следует писать код без использования статических типов!
Последние годы многие отказывались от TypeScript из-за отсутствия надежной поддержки, библиотек и фреймворков. Теперь ситуация кардинально изменилась.
Почему стоит прибегать к статической типизации?
Я считаю, что самая веская причина такого выбора — это обеспечение предсказуемости и читаемости кода, который до статической типизации может представлять собой все что угодно! Предположим, у вас есть переменная с именем user
, которая может выступать во всевозможных вариациях: в виде строки, числа, объекта, промиса и чего-то другого.
let user;
// строка?
// число?
// объект?
// функция?
Почему это так важно? Следует думать наперед, когда вы пишете код и знаете, что его будут использовать и читать другие люди и даже, возможно, вы сами через год. Поставьте себя на место человека, разбирающего ваш код. Каким он его увидит? Какой вклад сможет в него внести? Сможет ли понять его цель?
Теперь посмотрим на статически типизированную версию приведенного кода:
let user: string;
// Да! Это будет строка.
Какие есть варианты?
У нас в распоряжении не так много способов статической типизации JavaScript. Фактически, единственным оптимальным вариантом, который обычно используется, является TypeScript.
Есть и другие методы, такие как Flow и некоторые расширения IDE, но их вряд ли можно рассматривать в качестве конкурентов TypeScript.
TypeScript
TypeScript — это надмножество JavaScript, которое является строго (статически) типизированным языком. Это означает, что код будет написан на синтаксисе TypeScript, но на выходе вы получите код JavaScript.
На первый взгляд синтаксис может показаться немного странным. Но это совершенно нормальная реакция для человека, который всегда писал код на динамически типизированном языке, так что не пугайтесь.
Рассмотрим пример:
let user: string;
function phone_verifier(phone: number): bool {
return true;
};
Вы понимаете код, который написали, и четко видите его цель. Другие специалисты также смогут в нем разобраться.
Читайте также:
- Решение головоломки судоку на JavaScript с помощью хэш-карт и рекурсий
- Основы JavaScript: управление DOM элементами (часть 3)
- Супербыстрый веб-фреймворк Astro: подробный обзор
Читайте нас в Telegram, VK и Дзен
Перевод статьи Sina Farhadi: You Should Never Write Plain JavaScript Code Again