0Pricing
TypeScript Academy · Урок

Обобщения

Узнайте, как создавать повторно используемые компоненты с помощью обобщений

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

Введение в обобщения

Обобщения

Добро пожаловать на следующий урок! На этом уроке вы узнаете об обобщениях — мощной возможности TypeScript, которая позволяет создавать повторно используемые и типобезопасные компоненты. Давайте начнём!

Обобщения — иллюстрация 1

Что такое обобщения?

Что такое обобщения?

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

Пример: обобщённая функция:

Задание: Напишите обобщённую функцию, которая принимает аргумент и возвращает его без изменений.

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 для создания повторно используемых и типобезопасных функций, классов и интерфейсов. Обобщения — мощный инструмент для написания гибкого и масштабируемого кода. В следующем уроке мы изучим продвинутые типы, такие как отображаемые и условные типы. Продолжим писать код!

Обобщения — иллюстрация 10

Часто задаваемые вопросы

Урок «Обобщения» бесплатный?

Да — полный текст урока «Обобщения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 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 — локальная установка не требуется.

Все уроки этого курса

  1. Обобщения
  2. Псевдонимы типов и интерфейсы
  3. Вспомогательные типы
  4. Защитники типов
← Назад к TypeScript Academy