Стандартная библиотека TypeScript: полный обзор

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Стандартная библиотека TypeScript: полный обзор

TypeScript — это не просто надстройка над JavaScript, добавляющая статическую типизацию. Вместе с языком поставляется мощная стандартная библиотека, которая расширяет возможности разработчика. В этой статье мы подробно разберём ключевые компоненты стандартной библиотеки TypeScript, покажем примеры использования и объясним, как они упрощают разработку.

1. Встроенные типы данных

Стандартная библиотека TypeScript включает все базовые типы JavaScript, но добавляет к ним строгую типизацию и новые абстракции:

  • number, string, boolean — примитивные типы;
  • null и undefined — специальные значения;
  • any — отключение проверки типов;
  • unknown — безопасная альтернатива any;
  • never — тип для функций, которые никогда не завершаются;
  • void — отсутствие возвращаемого значения.
// Пример использования встроенных типов
let age: number = 25;
let name: string = "Анна";
let isActive: boolean = true;
let data: unknown = { id: 1 };
let error: never = (() => { throw new Error("Ошибка"); })();

2. Утилитарные типы (Utility Types)

TypeScript предоставляет набор встроенных утилитарных типов, которые позволяют трансформировать существующие типы без необходимости писать сложные конструкции:

  • Partial<T> — делает все поля типа T необязательными;
  • Required<T> — делает все поля обязательными;
  • Readonly<T> — запрещает изменение полей;
  • Pick<T, K> — выбирает указанные ключи из типа;
  • Omit<T, K> — исключает указанные ключи;
  • Record<K, T> — создаёт тип с ключами K и значениями T.
interface User {
  id: number;
  name: string;
  email: string;
}

// Делаем все поля необязательными
type PartialUser = Partial<User>;

// Выбираем только id и name
type UserPreview = Pick<User, "id" | "name">;

// Создаём словарь
type UserMap = Record<string, User>;

3. Работа с коллекциями: Map, Set, WeakMap, WeakSet

Стандартная библиотека включает типизированные версии коллекций ES6+. TypeScript автоматически выводит типы при использовании этих структур:

  • Map<K, V> — коллекция ключ-значение;
  • Set<T> — коллекция уникальных значений;
  • WeakMap<K extends object, V> — аналог Map с "слабыми" ссылками;
  • WeakSet<T extends object> — аналог Set для объектов.
// Типизированный Map
const userRoles = new Map<number, string>();
userRoles.set(1, "admin");
userRoles.set(2, "user");

// Типизированный Set
const uniqueIds = new Set<number>([1, 2, 3, 3]); // {1, 2, 3}

4. Промисы и асинхронность

TypeScript полностью поддерживает асинхронное программирование через Promise<T> и ключевые слова async/await. Типизация промисов позволяет точно указать, какой тип данных будет возвращён:

async function fetchUser(id: number): Promise<User> {
  const response = await fetch(`/api/users/${id}`);
  return response.json(); // Тип возвращаемого значения — User
}

// Использование
fetchUser(1).then(user => {
  console.log(user.name); // name — строка
});

5. Работа с DOM и браузерными API

Стандартная библиотека TypeScript включает полную типизацию для DOM API. Это позволяет безопасно работать с элементами, событиями и другими браузерными объектами:

  • HTMLElement, HTMLInputElement — типы элементов;
  • MouseEvent, KeyboardEvent — типы событий;
  • Document, Window — глобальные объекты.
const button = document.querySelector("#submit") as HTMLButtonElement;
button.addEventListener("click", (event: MouseEvent) => {
  event.preventDefault();
  console.log("Клик!");
});

const input = document.getElementById("name") as HTML                    

Рекомендаций