Стандартная библиотека 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 Также в библиотеке
Coroutines для Kotlin: полное руководство с примерами
Генерация PDF в Rust: обзор библиотек и инструментов
HTTP-клиент для Go (Golang): топ библиотек для работы с HTTP
Реактивное программирование в Kotlin: библиотека RxKotlin и корутины