В этом уроке мы рассмотрим многомерные массивы.
Работа с многомерными массивами
Чтобы определить многомерные массивы, нужно использовать синтаксис Type[][]
. Дословно это означает, что перед нами массив, который содержит массивы со значениями типа Type
. Несколько примеров:
// Тип number[][] выводится автоматически
const items1 = [[3, 8], [10, 4, 8]];
const items2: number[][] = [];
// Или так — Array<number[]>
// Используем псевдоним
type User = {
name: string;
}
// Или так — Array<User[]>
const users: User[][] = [
[{ name: 'Eva'}, { name: 'Adam' }],
];
Добавление не массивов в такие массивы приведет к ошибке типизации:
items1.push(99); // Error: Type 'number' is not assignable
Чтобы определить массивы составных типов, нужно использовать скобки:
const coll: (string | number)[][] = [];
coll.push(['hexlet', 5])
Также можно использовать синтаксис Array<Array<Type>>
. В примере ниже массив, внутри которого находятся массивы, содержащие значения типа Type
:
const coll: Array<Array<string | number>> = [];
coll.push(['hexlet', 5])
Сами массивы при этом могут быть частью объекта. Технически это позволяет создавать бесконечную вложенность из объектов и массивов:
type Course = {
name: string;
lessons: Lesson[];
}
type Lesson = {
name: string;
links: string[];
}
Здесь мы определяем тип Course
, который содержит массив lessons
. Каждый элемент этого массива — это объект типа Lesson
, который содержит массив links
. Каждый элемент этого массива — это строка. Такая структура данных может быть полезна, например, для хранения информации о курсах на сайте.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.