Обобщенные массивы
Часть раздела Введение в TypeScript путешествия по JavaScript на Coddy — урок 60 из 73.
Массивы и дженерики прекрасно работают вместе в TypeScript. Когда вы ранее изучали типизированные массивы, вы использовали синтаксис T[], чтобы указать, что массив может содержать только элементы определенного типа. Дженерики предоставляют еще один способ выразить ту же самую концепцию.
TypeScript предоставляет альтернативный синтаксис для типизированных массивов, используя формат Array<T>:
// Эти два объявления эквивалентны:
let numbers1: number[] = [1, 2, 3];
let numbers2: Array<number> = [1, 2, 3];Синтаксис Array<T> особенно полезен при работе с обобщенными функциями, которые оперируют массивами. Это делает обобщенную природу вашего кода более явной и читаемой, особенно когда вы создаете функции, способные работать с массивами любого типа, сохраняя при этом типобезопасность.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Задание
ЛегкоСоздайте универсальную функцию с именем getFirstElement, которая принимает массив любого типа и возвращает первый элемент или undefined, если массив пуст.
Функция должна:
- Использовать параметр универсального типа
T - Принимать один параметр с именем
arrтипаArray<T> - Возвращать первый элемент типа
Tилиundefined - Иметь явную аннотацию типа возвращаемого значения
T | undefined
Создайте следующие массивы, используя синтаксис Array<T>:
stringArrayтипаArray<string>, содержащий["apple", "banana", "cherry"]numberArrayтипаArray<number>, содержащий[10, 20, 30, 40]booleanArrayтипаArray<boolean>, содержащий[true, false, true]emptyStringArrayтипаArray<string>, который является пустым
Протестируйте свою функцию и выведите следующие результаты:
- Выведите результат вызова
getFirstElementсstringArray - Выведите результат вызова
getFirstElementсnumberArray - Выведите результат вызова
getFirstElementсbooleanArray - Выведите результат вызова
getFirstElementсemptyStringArray - Выведите результат вызова
getFirstElementс новымArray<string>, содержащим["single"]
Шпаргалка
TypeScript предоставляет два эквивалентных синтаксиса для типизированных массивов:
// Эти два объявления эквивалентны:
let numbers1: number[] = [1, 2, 3];
let numbers2: Array<number> = [1, 2, 3];Синтаксис Array<T> особенно полезен при работе с универсальными функциями (generics), которые оперируют массивами, делая обобщенную природу вашего кода более явной и читаемой, сохраняя при этом типобезопасность.
Попробуйте сами
// TODO: Напишите свой код здесь
// Создайте универсальную функцию getFirstElement
// Создайте необходимые массивы, используя синтаксис Array<T>
// Протестируйте функцию и выведите результатыВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Введение в 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Использование обобщенной функцииОбобщенные массивыОбобщенные интерфейсыИтоги: практика по обобщенным функциям