Обобщенные интерфейсы
Часть раздела Введение в 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
};В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Задание
ЛегкоСоздайте универсальный интерфейс с именем Result, который может содержать данные любого типа вместе с информацией об успехе.
Интерфейс должен иметь два свойства:
successтипаbooleandataтипаT(параметр универсального типа)
Создайте следующие объекты, используя ваш универсальный интерфейс:
stringResultтипаResult<string>сsuccess: trueиdata: "Operation completed"numberResultтипаResult<number>сsuccess: trueиdata: 42booleanResultтипаResult<boolean>сsuccess: falseиdata: falsearrayResultтипа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
// Выведите необходимые результатыВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Введение в TypeScript
1Начало работы с TS
Что такое TypeScript?Зачем использовать TypeScript?Ваш первый код на TypeScriptПроцесс компиляции и ошибкиИтоги: Введение в TS4Работа с функциями
Типизация параметров и возвращаемых значенийТипизация стрелочных функцийТип возвращаемого значения 'void'Необязательные параметры с '?'Значения параметров по умолчаниюТипизация Rest-параметровОпределение типов функцийИтоги: Создание типизированных функций2Основные типы
Базовые типы: str, num, booleanТип 'any': лазейкаТип 'unknown'Работа с 'null' и 'undef'Вывод типов в действииЯвные аннотации типовИтоги: Практика по основным типам5Типы: псевдонимы, объединения и пересечения
Псевдонимы типов для примитивовТипы объединения ('|')Работа с типами объединенияЛитеральные типыТипы пересечения ('&')Комбинирование псевдонимов типовИтоги: продвинутые комбинации типов3Структуры данных: массивы и кортежи
Типизированные массивыМодификатор 'readonly' для массивовЧто такое кортеж?Объявление кортежей и доступ к нимДеструктуризация кортежейКортежи readonlyМногомерные типизированные массивыОператор spread с массивамиИтоги: массивы и кортежи6Типизация объектов и интерфейсы
Встроенные аннотации типов объектовПсевдонимы типов для объектовВведение в интерфейсыИнтерфейсы против псевдонимов типовНеобязательные и Readonly свойстваРасширение интерфейсов и типовДобавление методов в интерфейсыИтоги: Определение структуры объектов9Обобщения: первое знакомство
Проблема, которую решают обобщенияСоздание обобщенной функции IdentityИспользование обобщенной функцииОбобщенные массивыОбобщенные интерфейсыИтоги: практика по обобщенным функциям