1. Введение, настройка окружения и работа с типами
Введение, настройка окружения и работа с типами
TypeScript — это язык программирования со строгой статической типизацией, который компилируется в чистый JavaScript. Он был разработан Microsoft для решения проблем масштабируемости, возникающих при написании крупных приложений на JavaScript. Браузеры и среда Node.js не умеют исполнять TypeScript напрямую, поэтому ключевым этапом разработки является компиляция (транспиляция) кода.
Почему TypeScript стал стандартом индустрии
JavaScript — язык с динамической типизацией. Это означает, что переменная может содержать число, затем строку, а затем функцию. Ошибки, связанные с типами (например, попытка вызвать метод массива у числа), обнаруживаются только в момент выполнения программы (runtime). TypeScript переносит обнаружение этих ошибок на этап написания кода и компиляции (compile time).
Основные преимущества:
* Статическая типизация: Позволяет описывать форму объекта, аргументы функций и возвращаемые значения. * Поддержка IDE: Автодополнение, навигация по коду и рефакторинг работают значительно точнее. * Читаемость: Типы служат самодокументацией кода. * Совместимость: TypeScript компилируется в любую версию ECMAScript (ES3, ES5, ES6+), что позволяет использовать современные фичи языка даже в старых окружениях.
Настройка окружения
Для работы с TypeScript необходимо установить Node.js, так как компилятор написан на JS и распространяется через пакетный менеджер npm.
Установка компилятора
Установите TypeScript глобально, чтобы команда tsc была доступна в терминале:
Проверьте установку:
Инициализация проекта
Создайте папку проекта и выполните инициализацию конфигурационного файла:
Команда создаст файл tsconfig.json. Это «сердце» настроек компилятора. В нем можно указать, в какую версию JS компилировать код (target), где лежат исходники (rootDir) и куда складывать готовые файлы (outDir).
Пример базовой настройки tsconfig.json:
Компиляция первого файла
Создайте файл src/index.ts:
Запустите компиляцию:
Компилятор считает настройки из tsconfig.json, возьмет файл из src и создаст dist/index.js, который уже можно запустить через node dist/index.js.
Основные типы данных
В TypeScript типизация осуществляется через аннотации: после названия переменной ставится двоеточие и тип.
Примитивные типы
TypeScript поддерживает все примитивы JavaScript:
* number: Для любых чисел (целых и с плавающей точкой).
* string: Для строк (одинарные, двойные кавычки и шаблоны).
* boolean: Значения true или false.
Массивы (Arrays)
Существует два способа типизации массивов:
type[].Array<type>.Если массив должен содержать разные типы (что не рекомендуется, но возможно), используется объединение типов (Union Type) или кортежи.
Кортежи (Tuples)
Кортеж — это массив фиксированной длины, где известен тип каждого элемента на конкретной позиции.
Тип Any
Тип any отключает проверку типов для переменной. Это «аварийный выход», который позволяет работать с кодом так же, как в чистом JavaScript. Использовать его следует с осторожностью, так как он сводит на нет преимущества TypeScript.
> Использование any часто считается плохой практикой. В строгом режиме ("strict": true в конфиге) TypeScript будет стараться предотвратить неявное использование any.
Функции
В функциях типизируются аргументы и возвращаемое значение.
Если функция ничего не возвращает, используется тип void:
Объекты
Для типизации объектов можно описывать их структуру инлайн или использовать псевдонимы типов (Type Aliases) и интерфейсы (Interfaces), которые мы подробно разберем в следующих статьях. Пока рассмотрим базовую структуру:
Unknown
Тип unknown — это безопасный аналог any. Если переменная имеет тип unknown, вы не можете совершать с ней операции (вызывать методы, складывать), пока не сузите тип (не докажете компилятору, что там лежит, например, число).
Вывод типов (Type Inference)
TypeScript обладает мощной системой вывода типов. Вам не всегда нужно явно указывать тип, если компилятор может понять его из контекста.
Однако явная типизация аргументов функций и возвращаемых значений публичных методов считается хорошим тоном для читаемости и стабильности контрактов кода.
Итоги
tsc.tsconfig.json управляет параметрами компиляции, такими как целевая версия JS и строгость проверок.number, string, boolean), массивы, кортежи и специальные типы (any, void, unknown).any, предпочитая unknown или конкретные типы для сохранения надежности кода.