Что такое TypeScript?
TypeScript — надмножество JavaScript со статической типизацией, разрабатываемое Microsoft. Исходники (.ts) компилируются в обычный JavaScript; типы стираются при сборке и не влияют на рантайм. TypeScript снижает класс ошибок «undefined is not a function» в крупных фронтенд- и fullstack-кодовых базах.
flowchart LR TS["TypeScript"] --> TSC["tsc / esbuild"] TSC --> JS["JavaScript"] JS --> Node["Node.js / браузер"]
Проверка типов на этапе компиляции; в прод уходит JavaScript.
Типы и вывод
Можно явно аннотировать переменные и функции; часто достаточно вывода (const x = 1). Интерфейсы и type описывают контракты API. Generics позволяют писать переиспользуемые коллекции и хуки без потери типов.
interface User { id: string; name: string }
async function fetchUser(id: string): Promise<User> {
const res = await fetch(`/api/users/${id}`);
return res.json();
}
Строгость компилятора
В tsconfig.json включают strict, noImplicitAny, strictNullChecks — чем строже, тем больше ошибок ловится до деплоя. Постепенная миграция с JS возможна через allowJs и JSDoc-типы.
Экосистема
Стандарт в React (Next.js, Vite), NestJS на бэкенде, Deno с нативной поддержкой TS. Типы для npm-пакетов часто в @types/* на DefinitelyTyped. Альтернатива проверки — JSDoc + TypeScript только как checker (checkJs).
TypeScript и JavaScript
Любой валидный JS — валидный TS (с оговорками). Новые фичи ECMAScript попадают в TS раньше стабильной поддержки в браузерах; target и lib в tsconfig задают, во что транспилировать.
Сайт: typescriptlang.org.
Частые вопросы
TypeScript выполняется в браузере?
Нет: браузер получает скомпилированный JavaScript. TypeScript нужен только на этапе разработки и CI.
Чем TypeScript отличается от JavaScript?
Добавляет статические типы и проверку до запуска; синтаксис расширяет JS, сборщик удаляет аннотации.
Нужен ли TypeScript для Node.js?
Не обязателен, но в коммерческих проектах с React/Next почти стандарт — меньше регрессий при рефакторинге.
Другие термины в теме «Веб-разработка»
Не хватает деталей?
Напишите, что уточнить по теме «TypeScript» — это помогает улучшать материал и подсказывает, какие термины добавить дальше. Email необязателен: укажите, если хотите ответ только для вас (мы не шлём рассылки).