TypeScript · Урок 26

TypeScript

Ошибки дешевле ловить до запуска. TypeScript — «JavaScript со страховкой»: типы передают сам себе и коллегам, чтобы неправильный вызов просто не скомпилировался. Сегодня он де-факто стандарт в индустрии.

Что добавляет TypeScript

TypeScript — надстройка над JS. Код пишется с типами, а компилятор tsc превращает его в чистый JavaScript, который исполняется везде. Типы при этом исчезают — это проверка времени разработки, а не рантайма.

npm install -D typescript
npx tsc --init

// app.ts
const name: string = "Ира";
let age: number = 26;

function priceWithTax(price: number, tax: number): number {
  return price * (1 + tax);
}

priceWithTax(100, "0.2"); // ❌ ошибка компиляции: ждали число

Интерфейсы: форма объекта

interface описывает, какие поля и типы есть у объекта. Линтер поймает опечатку в поле ещё до запуска.

interface Product {
  id: number;
  name: string;
  price: number;
  inStock?: boolean;   // необязательное поле
}

const products: Product[] = [
  { id: 1, name: "Кружка", price: 450 }
];

function render(p: Product) {
  console.log(p.name.toUpperCase());
}

Типы против интерфейсов

interface хорош для объектов (его можно «дополнить» и описать повторно). type гибче: умеет объединять (|) и пересекать (&) типы.

type Status = "new" | "active" | "blocked";
type ID = number | string;

let s: Status = "active";   // а "ожидание" — уже ошибка типа

type Circle = { radius: number };
type Colored = { color: string };
type Dot = Circle & Colored;   // и круг, и цвет — вместе

В связке с Vite

Руками TS в браузер не отдаём — его собирает инструмент. Быстрее всего стартовать с шаблона:

npm create vite@latest my-app -- --template react-ts
# или --template vanilla-ts для чистого TS-проекта
⚠️
Типы — это не магия: их проверяет только компилятор. Данные, пришедшие с сервера, TS не знает — для них пишут описания API вручную или генерируют из схемы.
💡
Начните с малого: типизируйте параметры функций — это ловит большинство сюрпризов. Затем интерфейсы для данных. Постепенно TS станет привычкой, а не «бюрократией».