Обобщения
Узнайте, как создавать повторно используемые компоненты с помощью обобщений
«Обобщения» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 4 уроков всего.
Введение в обобщения
Обобщения
Добро пожаловать на следующий урок! На этом уроке вы узнаете об обобщениях — мощной возможности TypeScript, которая позволяет создавать повторно используемые и типобезопасные компоненты. Давайте начнём!

Что такое обобщения?
Что такое обобщения?
Обобщения позволяют писать повторно используемый код, работающий с любым типом. Они служат заполнителями типов, которые можно указать при использовании.
Пример: обобщённая функция:
Задание: Напишите обобщённую функцию, которая принимает аргумент и возвращает его без изменений.
function identity<T>(value: T): T {
return value;
}
console.log(identity<string>("Hello"));
// Output: Hello
console.log(identity<number>(42));
// Output: 42
Зачем нужны обобщения?
Зачем нужны обобщения?
Обобщения помогают:
- Писать повторно используемый код: функции и классы могут работать с разными типами.
- Обеспечивать безопасность типов: можно требовать использования определённых типов, не жертвуя гибкостью.
- Уменьшать избыточность: не нужно писать отдельные версии одной и той же функции или класса для разных типов.
Совет: Используйте обобщения, чтобы писать более гибкий и удобный в сопровождении код.
Обобщённые функции
Обобщённые функции
Обобщения позволяют создавать гибкие функции. Пример:
Задание: Напишите обобщённую функцию, которая объединяет два объекта и возвращает результат.
function merge<T, U>(obj1: T, obj2: U): T & U {
return { ...obj1, ...obj2 };
}
let merged = merge({ name: "Alice" }, { age: 25 });
console.log(merged);
// Output: { name: "Alice", age: 25 }
Обобщённые классы
Обобщённые классы
Обобщения можно использовать в классах, чтобы сделать их повторно используемыми для разных типов. Пример:
class Box<T> {
private contents: T;
constructor(contents: T) {
this.contents = contents;
}
getContents(): T {
return this.contents;
}
}
let stringBox = new Box<string>("Hello");
console.log(stringBox.getContents());
// Output: Hello
let numberBox = new Box<number>(42);
console.log(numberBox.getContents());
// Output: 42
Обобщённые интерфейсы
Обобщённые интерфейсы
Интерфейсы также могут использовать обобщения, чтобы обеспечивать структуру для разных типов. Пример:
Задание: Определите обобщённый интерфейс и создайте объект, который его реализует.
interface Pair<T, U> {
first: T;
second: U;
}
let coordinates: Pair<number, number> = { first: 10, second: 20 };
console.log(coordinates);
// Output: { first: 10, second: 20 }
Ограничения обобщений
Ограничения обобщений
Можно добавить ограничения к обобщениям, чтобы гарантировать их работу только с определёнными типами. Пример:
function printLength<T extends { length: number }>(item: T): void {
console.log(`Length: ${item.length}`);
}
printLength("Hello");
// Output: Length: 5
printLength([1, 2, 3]);
// Output: Length: 3
// printLength(42);
// Error: Argument of type 'number' is not assignable to parameter of type '{ length: number }'.
Значения обобщений по умолчанию
Значения обобщений по умолчанию
Можно указать типы по умолчанию для обобщений, если тип не предоставлен. Пример:
Задание: Создайте обобщённую функцию с типом по умолчанию и проверьте её работу с разными типами.
function wrap<T = string>(value: T): T[] {
return [value];
}
console.log(wrap("Hello")); // Output: ["Hello"]
console.log(wrap(42)); // Output: [42]
Отличная работа!
Отличная работа!
Поздравляем! Вы научились использовать обобщения в TypeScript для создания повторно используемых и типобезопасных функций, классов и интерфейсов. Обобщения — мощный инструмент для написания гибкого и масштабируемого кода. В следующем уроке мы изучим продвинутые типы, такие как отображаемые и условные типы. Продолжим писать код!

Часто задаваемые вопросы
Урок «Обобщения» бесплатный?
Да — полный текст урока «Обобщения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 4 уроков всего.
Чему я научусь в уроке «Обобщения»?
Узнайте, как создавать повторно используемые компоненты с помощью обобщений Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать TypeScript Academy?
Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Обобщения»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке TypeScript Academy?
Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.