- Объяснять, что такое статические типы и какие ошибки они ловят заранее
- Описывать, как код на TypeScript превращается в JavaScript
- Настраивать проект с
tscи простымtsconfig.json - Запускать
.ts-файлы напрямую через Node.js илиtsxи проверять типы командойtsc --noEmit
Представь интернет-магазин, где функция formatPrice(price) месяцами работает без сбоев. Однажды цена приходит из формы не числом, а строкой '4.5', и страница падает с ошибкой TypeError: price.toFixed is not a function. Покупатель увидел ошибку раньше программиста. TypeScript существует для того, чтобы такие ошибки находил ты, а не пользователи, — прямо в редакторе, в момент написания кода.
Что такое TypeScript?
Язык программирования от Microsoft, который добавляет к JavaScript статические типы. Любая корректная программа на JavaScript — это и программа на TypeScript; TypeScript лишь позволяет описать, какие значения хранят переменные, параметры и функции.
В JavaScript типы проверяются динамически — только когда строка кода действительно выполняется. В TypeScript они проверяются статически — по тексту программы, без её запуска. Тип пишут после двоеточия, и это называется аннотацией типа: price: number означает «price — всегда число». Если где-то передать строку, компилятор сразу сообщит об этом:
function formatPrice(price: number): string {
return price.toFixed(2) + ' AZN';
}
console.log(formatPrice(4.5));
console.log(formatPrice('4.5'));: string говорит, что функция возвращает строку. Второй вызов ошибочен.shop.ts:6:25 - error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.
6 console.log(formatPrice('4.5'));
~~~~~shop.ts:6:25), код ошибки TS2345 и причина. Волнистая линия указывает точное место.От TypeScript к JavaScript
Браузеры и Node.js по-настоящему понимают только JavaScript. Поэтому компилятор TypeScript — tsc — делает две вещи: проверяет типы и создаёт обычный JavaScript, из которого все типы просто удалены. Вот небольшой файл и JavaScript, который tsc из него получает:
type User = { name: string; age: number };
export function greet(user: User): string {
return `Hello, ${user.name}! You are ${user.age}.`;
}
const aysel: User = { name: 'Aysel', age: 14 };
console.log(greet(aysel));Hello, Aysel! You are 14.
greet.ts: type User описывает форму объекта.export function greet(user) {
return `Hello, ${user.name}! You are ${user.age}.`;
}
const aysel = { name: 'Aysel', age: 14 };
console.log(greet(aysel));tsc — greet.js: строка type User и все аннотации исчезли, а логика осталась прежней.Что дают типы
- Ошибки ловятся рано: опечатка в имени свойства, неверный аргумент или забытая проверка на
nullнаходятся ещё до запуска программы. - Умный редактор: редактор знает, что такое каждое значение, поэтому автодополнение, переход к определению и безопасное переименование по всему проекту просто работают.
- Типы служат документацией: по заголовку
formatPrice(price: number): stringпонятно, как пользоваться функцией, даже не читая её тело. - Безопасные изменения в больших проектах: стоит изменить параметры функции, и компилятор перечислит все места, которые нужно исправить.
Настройка проекта
- 1Установи TypeScript
В папке проекта выполни
npm install --save-dev typescript. Компилятор попадёт вnode_modules, а вызывать его нужно черезnpx tsc. - 2Создай файл настроек
npx tsc --initсоздаёт файлtsconfig.jsonс рекомендуемыми настройками. - 3Напиши код
Помести код в файл
src/index.ts. - 4Скомпилируй и запусти
npx tscпроверяет весь проект и записывает JavaScript в папкуdist/; затем запусти его командойnode dist/index.js.
{
"compilerOptions": {
"target": "es2022",
"module": "nodenext",
"strict": true,
"rootDir": "src",
"outDir": "dist"
}
}tsconfig.json. tsc --init создаёт больше параметров, но основные — эти.| Параметр | Что делает |
|---|---|
target | выбирает, какую версию JavaScript создавать, например es2022 |
module | выбирает систему модулей; nodenext следует правилам современного Node.js |
strict | включает весь набор строгих проверок — всегда оставляй true |
rootDir / outDir | где лежат исходники .ts и куда записывать результат .js |
Запуск .ts-файлов напрямую
Современный Node.js (версии 22.18 и новее, включая Node.js 24) умеет запускать .ts-файл напрямую: node index.ts. Для этого используется удаление типов (type stripping): Node.js просто вырезает типы и выполняет оставшийся JavaScript. Инструмент tsx делает то же самое и в более старых версиях Node.js.
node src/index.ts # Node.js 22.18+: strip the types and run
npx tsx src/index.ts # tsx: run TypeScript on older Node.js too
npx tsc --noEmit # only check the types, write no filesГлавное
- TypeScript добавляет к JavaScript статические типы; ошибки находятся ещё до запуска кода.
- Аннотацию типа пишут после двоеточия:
price: number. tscпроверяет типы и создаёт обычный JavaScript без типов; во время выполнения типов нет.- Настройки проекта хранятся в
tsconfig.json;strict: trueдолжен быть включён всегда. node file.tsиtsxзапускают код, но не проверяют типы — для этого естьtsc --noEmit.
Проверь себя
Вопросов: 10. Каждый правильный ответ приносит XP.