0Pricing
TypeScript Academy · Урок

Обобщённые интерфейсы и псевдонимы типов

Применяйте обобщения к интерфейсам и пользовательским типам

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

Добро пожаловать

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

Синтаксис обобщённого интерфейса

Добавьте `` после имени интерфейса, чтобы сделать его обобщённым. Используйте T в типах свойств и сигнатурах методов.
interface Box<T> {
  value: T;
  unwrap(): T;
}
const box: Box<number> = { value: 42, unwrap() { return this.value; } };

Обобщённый псевдоним типа

Псевдонимы типов используют тот же синтаксис ``.
type Maybe<T> = T | null | undefined;
type Pair<A, B> = { first: A; second: B };
const p: Pair<string, number> = { first: 'Alice', second: 30 };

Интерфейс обобщённого репозитория

Классический вариант использования — интерфейс обобщённого репозитория, работающий с сущностью любого типа.
interface Repository<T> {
  findById(id: number): T | null;
  findAll(): T[];
  save(item: T): void;
  delete(id: number): void;
}

Реализация обобщённого интерфейса

Укажите аргумент типа при реализации обобщённого интерфейса.
class UserRepo implements Repository<User> {
  findById(id: number): User | null { return null; }
  findAll(): User[] { return []; }
  save(user: User): void {}
  delete(id: number): void {}
}

Расширение обобщённых интерфейсов

Обобщённые интерфейсы могут расширять другие обобщённые интерфейсы.
interface Named<T> { name: T; }
interface NamedAndAged<T> extends Named<T> { age: number; }

Обобщённый тип ответа

Обобщённый тип ответа API, содержащий данные любого типа.
type ApiResponse<T> = {
  status: 'success' | 'error';
  data: T;
  timestamp: number;
};
const res: ApiResponse<User[]> = { status: 'success', data: [], timestamp: Date.now() };

Несколько параметров типов в интерфейсах

Интерфейсы поддерживают несколько параметров типов.
interface KeyValue<K, V> {
  key: K;
  value: V;
}
const kv: KeyValue<string, number> = { key: 'age', value: 30 };

Обобщённый метод в необобщённом интерфейсе

Интерфейс может содержать обобщённые методы, не будучи обобщённым целиком.
interface Transformer {
  transform<T, U>(input: T, fn: (val: T) => U): U;
}

Рекурсивные обобщённые типы

Обобщённые типы могут ссылаться на самих себя, что полезно для древовидных структур и связанных списков.
interface TreeNode<T> {
  value: T;
  children: TreeNode<T>[];
}

Псевдоним типа и интерфейс для обобщений

Оба варианта одинаково хорошо поддерживают обобщения. Для контрактов, реализуемых классами, предпочтительнее интерфейс. Для обобщений с объединениями, таких как Maybe, предпочтительнее type.

Быстрая проверка

Что необходимо указать при реализации `interface Repository`?

Итоги

Обобщённые интерфейсы и псевдонимы типов используют для работы с типом любого вида. Они позволяют создавать повторно используемые контракты для репозиториев, оболочек ответов и рекурсивных структур данных. Реализуйте их, указав конкретный аргумент типа.

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

Урок «Обобщённые интерфейсы и псевдонимы типов» бесплатный?

Да — полный текст урока «Обобщённые интерфейсы и псевдонимы типов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 4 уроков всего.

Чему я научусь в уроке «Обобщённые интерфейсы и псевдонимы типов»?

Применяйте обобщения к интерфейсам и пользовательским типам Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать TypeScript Academy?

Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Обобщённые интерфейсы и псевдонимы типов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке TypeScript Academy?

Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

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

  1. Обобщённые функции: параметры типов
  2. Обобщённые интерфейсы и псевдонимы типов
  3. Ограничения обобщений с помощью extends
  4. Параметры типов по умолчанию
← Назад к TypeScript Academy