Menu
Coddy logo textTech

Обобщенные интерфейсы

Часть раздела Введение в TypeScript путешествия по JavaScript на Coddy — урок 61 из 73.

Так же, как вы можете создавать обобщенные функции, вы также можете создавать обобщенные интерфейсы. Это позволяет вам определять структуру объекта, сохраняя при этом определенные типы свойств гибкими и переиспользуемыми.

Вот как можно создать универсальный интерфейс, используя тот же синтаксис параметров типа:

interface Container {
  value: T;
  isEmpty: boolean;
}

<T> после имени интерфейса создает параметр типа, который можно использовать во всем определении интерфейса. В этом примере свойство value будет иметь тот тип, который вы укажете при использовании интерфейса, в то время как isEmpty остается фиксированным типом boolean.

Когда вы используете универсальный интерфейс, вы указываете конкретный тип в угловых скобках:

const stringContainer: Container = {
  value: "hello",
  isEmpty: false
};

const numberContainer: Container = {
  value: 42,
  isEmpty: false
};
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

challenge icon

Задание

Легко

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

Интерфейс должен иметь два свойства:

  • success типа boolean
  • data типа T (параметр универсального типа)

Создайте следующие объекты, используя ваш универсальный интерфейс:

  • stringResult типа Result<string> с success: true и data: "Operation completed"
  • numberResult типа Result<number> с success: true и data: 42
  • booleanResult типа Result<boolean> с success: false и data: false
  • arrayResult типа Result<string[]> с success: true и data: ["item1", "item2", "item3"]

Создайте универсальную функцию с именем processResult, которая:

  • Использует параметр универсального типа T
  • Принимает один параметр result типа Result<T>
  • Возвращает строковое сообщение
  • Если success имеет значение true, возвращает "Success: [data]"
  • Если success имеет значение false, возвращает "Failed: [data]"

Выведите следующие результаты:

  • Выведите результат вызова processResult с stringResult
  • Выведите результат вызова processResult с numberResult
  • Выведите результат вызова processResult с booleanResult
  • Выведите результат вызова processResult с arrayResult
  • Выведите stringResult.data

Шпаргалка

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

Создайте обобщенный интерфейс, используя синтаксис параметров типа:

interface Container<T> {
  value: T;
  isEmpty: boolean;
}

<T> после имени интерфейса создает параметр типа, который можно использовать во всем определении интерфейса.

Используйте обобщенный интерфейс, указав конкретный тип в угловых скобках:

const stringContainer: Container<string> = {
  value: "hello",
  isEmpty: false
};

const numberContainer: Container<number> = {
  value: 42,
  isEmpty: false
};

Попробуйте сами

// TODO: Напишите свой код здесь

// Создайте универсальный интерфейс Result


// Создайте объекты, используя интерфейс Result


// Создайте универсальную функцию processResult


// Выведите необходимые результаты
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Введение в TypeScript