Основы Typescript

Теория: Многомерные массивы

В этом уроке мы рассмотрим многомерные массивы.

Работа с многомерными массивами

Чтобы определить многомерные массивы, нужно использовать синтаксис 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. Каждый элемент этого массива — это строка. Такая структура данных может быть полезна, например, для хранения информации о курсах на сайте.

Рекомендуемые программы