TypeScript: что это за язык и как начать на нём писать

TypeScript — это JavaScript с проверкой типов: ошибку вроде строки вместо числа компилятор показывает ещё до запуска.

Разбираем, как установить TypeScript 7, настроить tsconfig, какие типы нужны в первую неделю и что означают ошибки компилятора, которые новички видят первыми. Все примеры кода проверены на версии 7.0.2.

Статью написал:
Ваня Буявец, продюсер, основатель Checkroi
Ваня Буявец
Основатель Checkroi, продюсер, эксперт в выборе онлайн-курсов
Все 2906 статей автора Подписаться на Телеграм-канал
Одобрено экспертом:
Наташа Буявец, основатель Checkroi, эксперт по онлайн-курсам
Наташа Буявец
Основательница Checkroi, продюсер Youtube-каналов, эксперт по онлайн-курсам
Все 3560 экспертных мнений Подписаться на Телеграм-канал
Обложка: TypeScript: что это за язык и как начать на нём писать

TypeScript (TS) — это JavaScript с типами. Вы пишете обычный JS-код и указываете, какие данные ждёт функция и что она возвращает. Компилятор tsc сверяет эти обещания до запуска и находит ошибки, которые в чистом JavaScript всплыли бы только у пользователя. Браузер и Node.js в итоге выполняют обычный JavaScript, типы из него стираются.

Начать можно за вечер: нужен Node.js, одна команда npm install -D typescript и редактор с подсветкой. Ниже разберём установку, базовые типы, свежие изменения TypeScript 7 и частые ошибки новичков. Если вы ещё выбираете первый язык, сначала прочитайте, зачем новичку JavaScript: TypeScript стоит на нём целиком.

CheckroiCheckroiПодборка курсов по TypeScript59 курсов • 19 школСравните цены, школы, программу и найдите выгодные предложения по обучениюСравнить→

Что такое TypeScript и чем он отличается от JavaScript

Рой пишет код на TypeScript и видит подсказку типов в редакторе

TypeScript выпустила Microsoft в 2012 году, исходный код открыт и лежит в репозитории на GitHub. Формально это надмножество JavaScript: любой рабочий JS-файл уже валидный TS-код, к нему можно постепенно добавлять типы.

Главное отличие в том, что у TypeScript статическая типизация. В JavaScript типы динамические: переменная сегодня хранит число, завтра строку, и язык молча это терпит. TypeScript проверяет типы заранее, ещё в редакторе.

Что сравниваем JavaScript TypeScript
Типизация Динамическая, проверка во время работы Статическая, проверка до запуска
Где выполняется Браузер, Node.js, Deno, Bun Там же, после удаления типов
Ошибка «строка вместо числа» Всплывает в работе или не всплывает вовсе Подсвечивается в редакторе
Подсказки в редакторе По догадке Точные: поля объектов, параметры функций
Порог входа Ниже Нужно знать JS и разобраться с типами

Язык программирования TypeScript или нет? Да, со своим синтаксисом и компилятором. Но отдельного движка у него нет, поэтому учить TypeScript в отрыве от JavaScript не получится. Как устроены объекты, массивы, DOM-дерево и асинхронность, вы всё равно узнаёте из JS.

Как установить TypeScript и запустить первый файл

Понадобится Node.js свежей версии и любой редактор. В VS Code поддержка TypeScript встроена: подсветка, автодополнение и ошибки работают без плагинов. Сравнение редакторов для фронтенда есть в разборе IDE для веб-разработки.

  1. Создайте папку проекта, выполните npm init -y и переключите проект на ES-модули: npm pkg set type=module.
  2. Поставьте компилятор в проект: npm install -D typescript. На 12 октября 2026 года в npm лежит версия 7.0.2.
  3. Проверьте установку: npx tsc -v выводит Version 7.0.2.
  4. Создайте tsconfig.json командой npx tsc --init или вручную, как в примере ниже.
  5. Положите код в папку src и запустите проверку: npx tsc.

Компилятор ставим в проект, а не глобально. Так у каждого проекта своя версия, и коллега после npm install получит ровно ту же.

Первый пример: ошибка, которую JavaScript пропустит

Возьмём функцию, которая складывает цену курса и доставку материалов. Во втором вызове цена случайно пришла строкой, как часто бывает с данными из формы:

function total(price: number, delivery: number): number {
  return price + delivery;
}

console.log(total(12000, 500));
console.log(total("12000", 500));

Свежий Node.js умеет запускать .ts-файлы напрямую, но типы он не проверяет, а просто вырезает. Поэтому node src/price.ts отрабатывает без единого предупреждения:

12500
12000500

Вместо 12 500 рублей получилось 12 000 500: JavaScript склеил строку с числом. Компилятор ловит это до запуска:

$ npx tsc --noEmit
src/price.ts(6,19): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.

Сообщения бывают и на русском. С флагом --locale ru та же ошибка выглядит так: Аргумент типа "string" нельзя назначить параметру типа "number".

Минимальный tsconfig.json

Файл настроек говорит компилятору, где лежит код, куда складывать JavaScript и насколько строго проверять. Этот вариант компилируется на TypeScript 7.0.2 без ошибок и предупреждений:

{
  "compilerOptions": {
    "target": "esnext",
    "module": "nodenext",
    "rootDir": "./src",
    "outDir": "./dist",
    "strict": true,
    "erasableSyntaxOnly": true,
    "verbatimModuleSyntax": true,
    "rewriteRelativeImportExtensions": true
  },
  "include": ["src"]
}

Команда npx tsc проверит типы и положит готовые .js в папку dist. Флаг erasableSyntaxOnly запрещает конструкции, которые Node.js не умеет вырезать без генерации кода, о них ниже. Полный список опций есть в справочнике tsconfig на официальном сайте.

Три способа запустить TypeScript

Путаница новичков часто начинается здесь: код вроде бы запускается, а ошибки типов никто не показывает. Разница между способами такая:

Способ Команда Проверяет типы Когда подходит
Сборка компилятором npx tsc, затем node dist/файл.js Да Проекты, которые уходят на сервер или в браузер
Прямой запуск в Node.js node src/файл.ts Нет Скрипты и учебные примеры
Сторонний загрузчик tsx node --import=tsx src/файл.ts Нет Когда нужны enum и пути из tsconfig

Рабочая схема для учёбы: запускайте файлы напрямую через Node.js, а npx tsc --noEmit запустите в соседнем терминале с флагом --watch. Тогда компилятор перепроверяет код при каждом сохранении. Тем, кому удобнее учиться с наставником и проверкой домашних заданий, подойдут курсы по TypeScript из нашего каталога.

Канал основателя Checkroi Вани Буявца3 700 человек читают мой Телеграм-канал про нейросетиСобрал промпты для Claude Code и ChatGPT, разборы ИИ-инструментов и лайфхаки по продвижению бизнеса в одном местеПрисоединиться

Основные типы TypeScript для первой недели

Рой раскладывает данные по подписанным коробкам-типам

Новичку хватит десятка конструкций, чтобы писать полезный код. Остальное (условные и сопоставленные типы, декораторы) понадобится позже, когда начнёте читать чужие библиотеки. Если работа с массивами и объектами в JS пока даётся с трудом, сначала разберите, как добавить объект в массив JavaScript: дальше в примерах будут именно такие данные.

Тип или конструкция Пример Когда нужен
Примитивы string, number, boolean Почти везде
Массивы number[] Списки однотипных значений
Объединение (union) "junior" | "middle" Значение из короткого списка
Необязательное поле mentor?: string Данных может не быть
Интерфейс interface Course { … } Форма объекта
Дженерик first<T>(items: T[]) Функция для любого типа данных
unknown JSON.parse(text) as unknown Данные извне, которые ещё надо проверить

Интерфейсы и type

Интерфейс описывает, какие поля есть у объекта. Type задаёт имя любому типу, включая объединения. Вот как это выглядит на карточке курса:

type Level = "junior" | "middle" | "senior";

interface Course {
  title: string;
  price: number;
  level: Level;
  mentor?: string;
}

function describe(course: Course): string {
  const mentor = course.mentor ?? "без наставника";
  return `${course.title}: ${course.price} ₽, ${course.level}, ${mentor}`;
}

const ts: Course = { title: "TypeScript с нуля", price: 24900, level: "junior" };
console.log(describe(ts));
// TypeScript с нуля: 24900 ₽, junior, без наставника

Теперь опечатка в уровне или обращение к необязательному полю без проверки не пройдут. Вот что ответил компилятор на level: "lead" и c.mentor.toUpperCase():

error TS2322: Тип ""lead"" не может быть назначен для типа "Level".
error TS18048: Возможно, "c.mentor" имеет значение undefined.

Вторая ошибка особенно ценна. «Cannot read properties of undefined» знакома каждому, кто писал на JavaScript, а здесь её видно ещё в редакторе.

Дженерики

Дженерик (generic) называют функцию с параметром-типом. Она работает с любыми данными и при этом помнит, что именно вернёт:

function first<T>(items: T[]): T | undefined {
  return items[0];
}

const prices = [24900, 31500, 18000];
const cheapest = first(prices.toSorted((a, b) => a - b));
console.log(cheapest); // 18000

Редактор знает, что cheapest имеет тип number | undefined, и не даст использовать результат как число без проверки. Если тема классов и объектов пока туманна, сначала разберитесь с ООП простыми словами, интерфейсы после этого читаются легче. Подробный разбор всех типов есть в официальном TypeScript Handbook.

Что изменилось в TypeScript 7

TypeScript 7.0 вышел 8 июля 2026 года, и после него часть привычных советов по настройке устарела. Что поменялось для новичка:

  • Компилятор переписан на Go. По замерам команды TypeScript полная сборка проекта ускоряется обычно в 8–12 раз, у кодовой базы VS Code в 11,9 раза.
  • strict включён по умолчанию. Раньше строгий режим надо было включать самому, теперь его выключают осознанно.
  • Цель ES5 удалена. Старые конфиги с "target": "es5" падают с ошибкой TS5108.
  • Программного API пока нет. Инструменты, которые встраивают компилятор (например, часть настроек Vue и Svelte), пока сидят на версии 6.0, для этого есть пакет @typescript/typescript6.

Параллельно Node.js научился запускать TypeScript сам. По документации Node.js вырезание типов включено по умолчанию с версий 23.6.0 и 22.18.0, а стабильным стало в 25.2.0 и 24.12.0. Проверки типов там нет, так что tsc по-прежнему нужен. Для Node.js-разработчика это значит, что скрипты и утилиты можно запускать без сборки, а проверку типов оставить редактору и CI.

Частые ошибки новичка и что с ними делать

Ноутбук с терминалом и зелёной галочкой после успешной проверки кода

Ниже ошибки, которые TypeScript 7.0.2 и Node.js 25 выдают на типичных промахах новичка. Сообщения приведены так, как их печатает компилятор.

Симптом Причина Что сделать
TS5112: tsconfig.json is present but will not be loaded if files are specified on commandline Запустили tsc файл.ts в папке с tsconfig Запускать npx tsc без имени файла или добавить --ignoreConfig
TS5011: The 'rootDir' setting must be explicitly set В TypeScript 7 папку исходников надо указывать явно Добавить "rootDir": "./src"
ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX: TypeScript enum is not supported in strip-only mode Node.js не умеет вырезать enum, ему нужно генерировать код Заменить enum объектом as const (пример ниже)
Node.js не находит модуль при import "./utils" При прямом запуске расширение обязательно Писать import "./utils.ts"
Ошибок нет, а код всё равно падает Везде стоит any, и проверка отключена Для внешних данных брать unknown и проверять перед использованием

Замена enum, которая работает и в tsc, и в Node.js без сборки:

const Status = { Draft: "draft", Published: "published" } as const;
type Status = (typeof Status)[keyof typeof Status];

function label(s: Status): string {
  return s === Status.Published ? "опубликовано" : "черновик";
}
console.log(label(Status.Published)); // опубликовано

Совет: включите в проекте erasableSyntaxOnly сразу. Тогда компилятор сам подсветит enum и другие конструкции, на которых упадёт запуск через Node.js, с ошибкой TS1294.

Как перевести JavaScript-проект на TypeScript постепенно

Переписывать всё разом не нужно. Компилятор умеет проверять и обычные .js-файлы, если включить две опции: "allowJs": true и "checkJs": true. Типы тогда берутся из JSDoc-комментариев:

/** @param {number} price @param {number} delivery */
function total(price, delivery) { return price + delivery; }
total("12000", 500);
// error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.
  1. Добавьте в проект tsconfig.json с allowJs и checkJs и почините то, что компилятор найдёт сразу.
  2. Переименовывайте файлы из .js в .ts по одному, начиная с утилит без зависимостей.
  3. Опишите интерфейсами данные, которые приходят с сервера: здесь типы окупаются быстрее всего.
  4. В TypeScript 7 strict включён по умолчанию. На время перевода его можно выключить строкой "strict": false и вернуть, когда основная масса файлов уже на TS.
Ваня БуявецКанал основателя Checkroi Вани БуявцаЗабирайте промпты и обучение по нейросетям в моём Телеграм-каналеБольше 3 700 человек уже применяют Claude Code, ChatGPT и другие нейросети в работе, учёбе, бизнесе и жизниПерейти в канал

Где используют TypeScript и стоит ли его учить

По данным отчёта GitHub Octoverse, в августе 2025 года TypeScript впервые стал самым используемым языком на GitHub. У него было 2 636 006 активных авторов кода за месяц, на 66,6 % больше, чем годом раньше, и примерно на 42 тысячи больше, чем у Python.

На практике TypeScript встречается в трёх местах:

  • Фронтенд. React-компоненты удобно типизировать через интерфейсы пропсов, а Angular сам написан на TypeScript. Подробнее о стеке читайте в разборе профессии React-разработчика.
  • Бэкенд на Node.js. NestJS построен на TypeScript, Express тоже работает с ним без проблем.
  • Инструменты и тесты. Конфиги Vite, автотесты на Playwright, скрипты сборки.

Сложно ли учить TypeScript? Если вы уверенно пишете на JavaScript, на базовые типы обычно хватает пары недель практики. Если JS ещё не знаете, начинайте с него: TypeScript добавляет к языку слой проверок, а не заменяет его. Как выстроить этот путь от HTML до первой работы, мы расписали в плане как стать фронтенд-разработчиком.

Попробовать язык без установки можно в TypeScript Playground: слева пишете TS, справа видите готовый JavaScript и ошибки.

Где освоить TypeScript системно

Первый файл и десяток типов вы освоите по этой статье. А чтобы писать на TypeScript в команде, нужна практика на настоящих проектах: React-компоненты, API, тесты, ревью кода. Ниже курсы по TypeScript из каталога, все программы собраны на странице курсов TypeScript. Если базы JavaScript пока нет, начните с курсов JavaScript.

КурсШколаСтоимость со скидкойВ рассрочкуДлитель­ностьОбзор курса от Checkroi
TypeScript для веб-разработчика
Перейти на сайт курса
SkillboxSkillbox35 351 ₽2946 ₽/мес.1 месяцОбзор курса
TypeScript с нуля
Перейти на сайт курса
MerionMerion9680 ₽767 ₽/мес.2 месяцаОбзор курса
TypeScript с нуля - полный курс и паттерны проектирования
Перейти на сайт курса
PurpleSchoolPurpleSchool3999 ₽2749 ₽/мес.2 месяцаОбзор курса
NestJS - с нуля, современный backend на TypeScript и Node JS
Перейти на сайт курса
PurpleSchoolPurpleSchool3999 ₽2749 ₽/мес.2 месяцаОбзор курса
Frontend-разработчик с нуля
Перейти на сайт курса
НетологияНетология113 400 ₽5385 ₽/мес.10 месяцевОбзор курса

Больше программ — в полном каталоге курсов по TypeScript

Часто задаваемые вопросы

TypeScript — это язык программирования или надстройка над JavaScript?

И то и другое. У TypeScript свой синтаксис типов и свой компилятор, но выполняется он как обычный JavaScript: перед запуском типы удаляются. Любой рабочий JS-код уже считается валидным TypeScript.

Чем TypeScript отличается от JavaScript?

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

Можно ли учить TypeScript без знания JavaScript?

Не стоит. TypeScript добавляет к JavaScript проверку типов, а объекты, массивы, асинхронность и работу с DOM вы всё равно изучаете из JS. С чего начать, мы расписали в плане как стать фронтенд-разработчиком.

Нужен ли компилятор tsc, если Node.js сам запускает .ts-файлы?

Нужен. С версий 22.18.0 и 23.6.0 Node.js по умолчанию вырезает типы и запускает .ts-файлы, но типы при этом не проверяет. Ошибки типов показывает только tsc или редактор.

Какая версия TypeScript актуальна сейчас?

TypeScript 7: он вышел 8 июля 2026 года, на 12 октября 2026 года в npm лежит версия 7.0.2. Компилятор переписан на Go, а строгий режим strict в нём включён по умолчанию.

Читайте Checkroi первым в Google
Добавьте Checkroi в избранные источники — и наши разборы курсов и обзоры школ будут показываться выше в вашей выдаче Google.
Оставить комментарий
0 комментариев
Форма комментария

Оставьте комментарий

Напишите, что думаете. Нам важно ваше мнение!