1. Введение, Настройка окружения и Основные типы
Введение, Настройка окружения и Основные типы
TypeScript — это язык программирования, разработанный Microsoft, который позиционируется как типизированное надмножество JavaScript. Это означает, что любой валидный код на JavaScript также является валидным кодом на TypeScript, но TypeScript добавляет к нему мощную систему статической типизации.
Главная проблема JavaScript — динамическая типизация. Ошибки, связанные с типами (например, попытка вызвать метод у undefined), обнаруживаются только во время выполнения программы, когда пользователь уже взаимодействует с интерфейсом. TypeScript решает эту проблему, проверяя код на этапе компиляции.
!TypeScript является надмножеством JavaScript
Ключевые преимущества
* Статическая типизация: Ошибки выявляются при написании кода, а не в браузере. * Улучшенный инструментарий: Автодополнение (IntelliSense), навигация по коду и безопасный рефакторинг. * Читаемость: Типы служат документацией, которая никогда не устаревает. * Транспиляция: Браузеры не понимают TypeScript. Код должен быть скомпилирован (транспилирован) в обычный JavaScript. Это позволяет использовать самые новые фичи языка, компилируя их в старые версии стандарта (например, ES5) для поддержки старых браузеров.
Настройка окружения
Для работы с TypeScript необходимо установить Node.js, так как компилятор написан на JS и работает в среде Node.
1. Инициализация проекта
Создайте папку для проекта и откройте терминал. Инициализируйте package.json:
2. Установка TypeScript
Рекомендуется устанавливать TypeScript локально для каждого проекта, чтобы избежать конфликтов версий. Используйте флаг --save-dev (или -D), так как компилятор нужен только на этапе разработки.
3. Конфигурация компилятора
Поведение компилятора управляется файлом tsconfig.json. Для его автоматического создания выполните:
В созданном файле tsconfig.json раскомментируйте и настройте ключевые параметры:
4. Запуск первого скрипта
Создайте папку src и файл src/index.ts:
Для компиляции выполните команду:
После этого в папке dist появится файл index.js, который можно запустить через Node.js:
!Браузеры исполняют только JavaScript, поэтому TypeScript требует этапа компиляции
Основные типы данных
В TypeScript тип указывается после названия переменной через двоеточие. Это называется аннотацией типа.
Примитивные типы
TypeScript поддерживает все примитивы JavaScript:
* number: Для любых чисел (целых и с плавающей точкой).
* string: Для строк (одинарные, двойные кавычки и шаблоны).
* boolean: Значения true или false.
Массивы (Arrays)
Существует два способа типизации массивов:
[].Array<type>.Кортежи (Tuples)
Кортеж — это массив фиксированной длины, где известен тип каждого элемента на конкретной позиции. Это полезно, например, для хранения пары "ключ-значение".
Enum (Перечисления)
enum позволяет определить набор именованных констант. Это упрощает чтение кода. По умолчанию элементы нумеруются с нуля.
Вы можете задать значения вручную (в том числе строковые):
Any
Тип any отключает проверку типов для переменной. Это "путь отступления" при миграции JS-кода на TS. Использовать его в новом коде не рекомендуется, так как он убивает смысл использования TypeScript.
Unknown
unknown — это безопасный аналог any. Вы можете присвоить переменной unknown любое значение, но не можете использовать её методы или присваивать её другим переменным без предварительной проверки типа (сужения типа).
Void
Используется обычно как возвращаемый тип функций, которые не возвращают значения.
Null и Undefined
В TypeScript null и undefined имеют свои собственные типы. Если включена опция strictNullChecks (внутри strict: true), вы не можете присвоить null переменной с типом number или string.
Never
Тип never представляет значения, которые никогда не могут произойти. Например, функция, которая всегда выбрасывает ошибку или имеет бесконечный цикл.
Вывод типов (Type Inference)
TypeScript достаточно умен, чтобы во многих случаях автоматически определять тип переменной. Вам не обязательно всегда писать аннотации вручную.
Хорошей практикой считается позволять компилятору выводить типы там, где это очевидно, и указывать их явно там, где логика сложная или требуется строгий контракт (например, аргументы функций).
Итоги
* TypeScript — это надмножество JavaScript, добавляющее статическую типизацию и требующее компиляции.
* Настройка проекта выполняется через tsconfig.json, где задаются параметры строгости и пути к файлам.
* Основные типы включают примитивы (number, string, boolean), коллекции (Array, Tuple) и специальные типы (Enum, any, unknown, void, never).
* Избегайте any, предпочитая ему unknown или конкретные типы для сохранения безопасности кода.