Часть 1: Основы

Глава 1 из 3

Что такое TypeScript?

Что такое TypeScript?

TypeScript — это типизированное надмножество JavaScript, которое компилируется в чистый JavaScript.

Основные преимущества

  • 🎯 Статическая типизация — ловите ошибки на этапе разработки
  • 🚀 Улучшенная IDE поддержка — автодополнение и рефакторинг
  • 📚 Читаемость кода — типы служат документацией
  • 🛡️ Надёжность — меньше багов в продакшене

TypeScript помогает писать более предсказуемый и поддерживаемый код.

Пример кода

```typescript interface User { id: number; name: string; email: string; }

function greetUser(user: User): string { return `Привет, ${user.name}!`; } ```

Свайпни влево, чтобы продолжить →

Базовые типы

Базовые типы в TypeScript

TypeScript предоставляет множество встроенных типов для работы.

Примитивные типы

  1. string — строки
  2. number — числа
  3. boolean — логические значения
  4. null и undefined
  5. symbol — уникальные идентификаторы

```typescript let message: string = "Привет"; let count: number = 42; let isActive: boolean = true; ```

Сложные типы

  • Array — массивы
  • Tuple — кортежи
  • Object — объекты
  • Enum — перечисления

Пример с массивом

```typescript const numbers: number[] = [1, 2, 3, 4, 5]; const names: Array = ["Alice", "Bob", "Charlie"]; ```


Продолжай изучать дальше! →

Интерфейсы и типы

Интерфейсы и типы

Два основных способа описания структуры данных в TypeScript.

Interface vs Type

Interface

```typescript interface Person { name: string; age: number; greet(): void; } ```

Когда использовать:

  • Для описания структуры объектов
  • Когда нужно расширение (extends)
  • Для публичного API

Type Alias

```typescript type ID = string | number; type User = { id: ID; name: string; }; ```

Когда использовать:

  • Для union и intersection типов
  • Для утилитарных типов
  • Для примитивных типов

Практический пример

```typescript interface Product { id: number; title: string; price: number; }

type CartItem = Product & { quantity: number; };

const item: CartItem = { id: 1, title: "Книга", price: 500, quantity: 2 }; ```

Дальше ещё интереснее! →

Дженерики (Generics)

Дженерики в TypeScript

Дженерики позволяют создавать переиспользуемые компоненты, которые работают с различными типами.

Зачем нужны?

Вместо того чтобы писать:

```typescript function identity(arg: number): number { return arg; } ```

Используем дженерик:

```typescript function identity(arg: T): T { return arg; }

const num = identity(42); const str = identity("Hello"); ```

Дженерики в интерфейсах

```typescript interface ApiResponse { data: T; status: number; message: string; }

interface User { id: number; name: string; }

const response: ApiResponse = { data: { id: 1, name: "John" }, status: 200, message: "Success" }; ```

Ограничения дженериков

```typescript interface HasLength { length: number; }

function logLength(arg: T): void { console.log(arg.length); }

logLength("Hello"); // ✅ OK logLength([1, 2, 3]); // ✅ OK // logLength(123); // ❌ Error ```

Почти закончили! →

Полезные утилиты

Утилитарные типы TypeScript

TypeScript предоставляет множество встроенных утилитарных типов.

Часто используемые

Partial

Делает все свойства опциональными

```typescript interface User { id: number; name: string; email: string; }

type PartialUser = Partial; // { id?: number; name?: string; email?: string; } ```

Required

Делает все свойства обязательными

```typescript type RequiredUser = Required; ```

Pick<T, K>

Выбирает определённые свойства

```typescript type UserPreview = Pick<User, 'id' | 'name'>; // { id: number; name: string; } ```

Omit<T, K>

Исключает определённые свойства

```typescript type UserWithoutEmail = Omit<User, 'email'>; // { id: number; name: string; } ```

Record<K, T>

```typescript type Role = 'admin' | 'user' | 'guest'; type Permissions = Record<Role, string[]>;

const permissions: Permissions = { admin: ['read', 'write', 'delete'], user: ['read', 'write'], guest: ['read'] }; ```


🎉 Поздравляем!

Вы изучили основы TypeScript. Продолжайте практиковаться и писать типобезопасный код!

Полезные ресурсы