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

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 для веб-разработки.
- Создайте папку проекта, выполните
npm init -yи переключите проект на ES-модули:npm pkg set type=module. - Поставьте компилятор в проект:
npm install -D typescript. На 12 октября 2026 года в npm лежит версия 7.0.2. - Проверьте установку:
npx tsc -vвыводитVersion 7.0.2. - Создайте
tsconfig.jsonкомандойnpx tsc --initили вручную, как в примере ниже. - Положите код в папку
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 из нашего каталога.
Основные типы 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'.
- Добавьте в проект
tsconfig.jsonсallowJsиcheckJsи почините то, что компилятор найдёт сразу. - Переименовывайте файлы из
.jsв.tsпо одному, начиная с утилит без зависимостей. - Опишите интерфейсами данные, которые приходят с сервера: здесь типы окупаются быстрее всего.
- В TypeScript 7
strictвключён по умолчанию. На время перевода его можно выключить строкой"strict": falseи вернуть, когда основная масса файлов уже на TS.
Где используют 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 для веб-разработчика Перейти на сайт курса | 35 351 ₽ | 2946 ₽/мес. | 1 месяц | Обзор курса | |
| TypeScript с нуля Перейти на сайт курса | 9680 ₽ | 767 ₽/мес. | 2 месяца | Обзор курса | |
| TypeScript с нуля - полный курс и паттерны проектирования Перейти на сайт курса | 3999 ₽ | 2749 ₽/мес. | 2 месяца | Обзор курса | |
| NestJS - с нуля, современный backend на TypeScript и Node JS Перейти на сайт курса | 3999 ₽ | 2749 ₽/мес. | 2 месяца | Обзор курса | |
| Frontend-разработчик с нуля Перейти на сайт курса | 113 400 ₽ | 5385 ₽/мес. | 10 месяцев | Обзор курса |
Больше программ — в полном каталоге курсов по TypeScript




