Что такое 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 необязателен: укажите, если хотите ответ только для вас (мы не шлём рассылки).

Поделиться