1. Введение в TypeScript: установка окружения, настройка компилятора и первый запуск
Введение в TypeScript: установка окружения, настройка компилятора и первый запуск
Добро пожаловать в курс «TypeScript для начинающих». Если вы читаете эту статью, значит, вы решили сделать важный шаг в своём развитии как разработчика. JavaScript — прекрасный язык, на котором держится весь современный веб, но по мере роста проектов его гибкость часто превращается в источник трудноуловимых ошибок. Здесь на сцену выходит TypeScript.
В этой первой статье мы не будем сразу погружаться в сложные типы или дженерики. Наша цель — построить надежный фундамент. Мы разберем, что такое TypeScript, подготовим ваш компьютер к работе, установим необходимые инструменты и напишем нашу первую программу. К концу этого урока у вас будет полностью настроенная среда разработки, готовая к покорению типизированного мира.
Что такое TypeScript и зачем он нам нужен?
TypeScript (часто сокращаемый до TS) — это язык программирования, разработанный компанией Microsoft. Но называть его просто «другим языком» было бы не совсем верно. Технически, TypeScript является надмножеством (superset) JavaScript.
Это означает, что любой валидный код на JavaScript также является валидным кодом на TypeScript. Вы можете взять файл .js, переименовать его в .ts, и он будет работать. Однако TypeScript добавляет поверх привычного синтаксиса мощную систему статической типизации.
!Схематичное изображение того, как TypeScript включает в себя JavaScript и расширяет его возможности.
Главная проблема JavaScript — это динамическая типизация. Вы можете присвоить переменной число, а через строчку — строку, и интерпретатор даже не поперхнется, пока код не упадет во время выполнения у клиента. TypeScript решает эту проблему, проверяя типы на этапе написания кода и компиляции, задолго до того, как пользователь откроет ваш сайт.
Ключевые преимущества:
* Раннее выявление ошибок: Компилятор укажет на ошибку еще до запуска программы. * Улучшенный автокомплит: Редакторы кода (IDE) лучше понимают структуру вашего кода и предлагают более точные подсказки. * Читаемость: Типы служат отличной документацией. Глядя на функцию, вы сразу понимаете, что она принимает и что возвращает. * Безопасный рефакторинг: Изменение структуры данных в одном месте автоматически подсветит все места, где эти данные используются неправильно.
Подготовка окружения: Node.js и npm
Браузеры не умеют исполнять TypeScript напрямую. Они понимают только JavaScript. Поэтому нам нужен инструмент, который превратит наш красивый типизированный код в обычный JS, понятный браузеру или серверу. Этот процесс называется транспиляцией (transpilation).
Компилятор TypeScript написан на JavaScript, поэтому для его работы нам потребуется среда выполнения Node.js.
Шаг 1: Установка Node.js
Если у вас уже установлен Node.js, вы можете пропустить этот шаг. Если нет:
Чтобы проверить, что установка прошла успешно, откройте терминал (командную строку) и введите:
Вы должны увидеть версию Node.js (например, v18.16.0 или новее).
Вместе с Node.js автоматически устанавливается пакетный менеджер npm (Node Package Manager). Проверьте его версию:
Установка компилятора TypeScript
Теперь, когда у нас есть фундамент, мы можем установить сам TypeScript. Мы сделаем это глобально, чтобы команда tsc (TypeScript Compiler) была доступна в любой папке вашего компьютера.
Откройте терминал и выполните следующую команду:
Флаг -g означает «global» (глобально). В некоторых системах (macOS или Linux) вам может потребоваться добавить sudo перед командой, если у вас нет прав администратора.
После завершения установки проверим версию компилятора:
Если вы видите номер версии (например, Version 5.3.0), поздравляю — ваш компьютер готов к работе с TypeScript!
Ваш первый TypeScript-файл
Давайте напишем простейшую программу, чтобы увидеть магию в действии. Создайте новую папку для нашего проекта, например hello-ts, и откройте её в вашем любимом редакторе кода (рекомендуется VS Code, так как он имеет встроенную поддержку TS).
Создайте файл с именем index.ts. Обратите внимание на расширение .ts.
Вставьте в файл следующий код:
Давайте разберем, что здесь происходит:
const message: string — мы явно указали, что переменная message может содержать только строку. Если вы попытаетесь присвоить ей число, редактор подчеркнет это красным.name: string — аргумент функции тоже строго типизирован.: void — это тип возвращаемого значения функции. void означает, что функция ничего не возвращает (она просто выводит текст в консоль).Попытка запуска
Если вы попытаетесь запустить этот файл с помощью Node.js напрямую (node index.ts), вы, скорее всего, получите ошибку (если не используете специальные загрузчики). Node.js не понимает аннотации типов вроде : string. Нам нужно скомпилировать код.
Компиляция и запуск
Вернитесь в терминал, находясь в папке проекта, и выполните команду:
Если вы не увидели никаких сообщений об ошибках, значит, компиляция прошла успешно. Посмотрите в папку с файлами. Вы увидите, что рядом с index.ts появился новый файл — index.js.
!Визуализация процесса превращения TypeScript кода в JavaScript код через компилятор.
Откройте index.js. Он будет выглядеть примерно так:
Заметьте: все типы исчезли! Компилятор «вырезал» их, оставив чистый JavaScript, который теперь можно запустить:
В консоли вы увидите: Привет, мир TypeScript! Меня зовут Студент.
Настройка компилятора: tsconfig.json
Запускать tsc filename.ts каждый раз неудобно, особенно если файлов много. К тому же, мы хотим контролировать, как именно компилируется наш код (например, в какую версию JS превращать синтаксис).
Для этого используется файл конфигурации tsconfig.json. Чтобы создать его автоматически, выполните в корне вашего проекта команду:
В папке появится файл tsconfig.json с большим количеством настроек. Большинство из них закомментированы. Давайте разберем самые важные базовые опции, которые стоит знать новичку.
Основные настройки
Откройте tsconfig.json. Вы увидите JSON-объект с полем compilerOptions. Вот ключевые параметры:
"target": "es5", то все современные фишки (как стрелочные функции или const) будут переписаны в старый синтаксис для совместимости с древними браузерами. Для современной разработки часто ставят "es2016" или новее.commonjs для Node.js или esnext для современных фронтенд-сборщиков)..ts файлы. Хорошей практикой считается держать исходный код в папке src..js файлы. Обычно это папка dist или build. Это позволяет не смешивать исходники и результат.true, TypeScript включает максимальный уровень проверок. Настоятельно рекомендую всегда держать эту опцию включенной. Это заставляет вас писать более качественный код и учит правильно работать с типами.Пример простой конфигурации
Давайте настроим наш проект правильно. Создайте папку src и переместите туда index.ts. Отредактируйте tsconfig.json, оставив (или раскомментировав) следующие строки:
Теперь, чтобы скомпилировать проект, вам не нужно указывать имя файла. Просто введите в терминале:
Компилятор автоматически найдет tsconfig.json, прочитает настройки, возьмет все файлы из src и положит результат в dist.
Автоматическая перекомпиляция (Watch Mode)
Разработчики ленивы, и писать tsc после каждого изменения кода — утомительно. TypeScript имеет встроенный режим наблюдения.
Запустите команду:
Или tsc --watch. Терминал «зависнет» в режиме ожидания. Теперь, как только вы сохраните любой .ts файл в проекте, компилятор мгновенно пересооберет его. Попробуйте изменить текст в index.ts и сохранить файл — вы увидите сообщение о компиляции в терминале.
Для выхода из этого режима нажмите Ctrl + C.
Полезный инструмент: ts-node
В процессе разработки иногда хочется просто запустить TS-файл, не думая о папках dist, компиляции и прочем. Для этого существует утилита ts-node. Она компилирует и исполняет код «на лету» в памяти.
Установим её (можно локально для проекта):
Теперь вы можете запускать код одной командой (используя npx для запуска локальных пакетов):
Это очень удобно для тестов, скриптов и обучения, хотя для продакшена (боевого сервера) всегда следует использовать предварительную компиляцию через tsc.
Заключение
Поздравляю! Вы успешно преодолели самый скучный, но необходимый этап — настройку окружения. Теперь у вас есть:
tsconfig.json, который раскладывает файлы по полочкам.В следующей статье мы перейдем к самому интересному — системе типов. Мы узнаем, чем any отличается от unknown, как типизировать объекты и массивы, и почему void — это не совсем «ничего».
Готовы? Тогда проверьте, что ваш терминал работает, и переходите к следующему уроку!