Типизация массивов (Array)

Тренажер по TypeScript для пользователей с начальным уровнем подготовки.

Тренажер по TypeScript

Типизация массивов — важная часть работы с TypeScript. Существует два эквивалентных синтаксиса: number[] и Array — оба указывают на массив чисел.

На этом практическом уроке вы изучите:

  • Объявление типизированных массивов обоими способами
  • Работу с массивами примитивов
  • Типизацию пустых массивов

Интерактивные задания и примеры помогут понять, как TypeScript контролирует содержимое массивов и предотвращает ошибки на этапе разработки.

Список тем

1. Типизация массива

id: 40636_arr_01_replace

В этом фрагменте кода на TypeScript объявляются три массива с разными типами данных. Заполните пропуски, указав правильные типы массивов, чтобы код был корректно типизирован. Обратите внимание на значения, которые содержатся в каждом массиве, чтобы определить тип его элементов. Используйте синтаксис TypeScript для типизации массивов.

Заполните пропуски
let numbers: input1S = [1, 2, 3];
let strings: input2S = ["a", "b", "c"];
let booleans: input3S = [true, false, true];

console.log(numbers);
console.log(strings);
console.log(booleans);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

2. Эквивалентные записи массивов

id: 40636_arr_02_compare

В левой колонке приведены типы массивов в нотации T[] (например, string[]), а в правой — эквивалентные типы в нотации Array. Сопоставьте каждый тип из левой колонки с эквивалентным типом из правой. Обратите внимание, что в правой колонке нет лишних вариантов, но порядок типов перемешан.

Сопоставьте строки в правой(нижней) части с соответствующими строками в левой(верхней) по порядковому номеру
string[]
number[]
boolean[]
(string | number)[]
any[]
never[]
Array<string | number>
Array<boolean>
Array<never>
Array<number>
Array<string>
Array<any>
Сообщения
Проверить
Показать подсказку

3. Ошибка типизации массива

id: 40636_arr_03_error

В этом фрагменте TypeScript-кода допущена одна ошибка типизации массива. Массив объявлен как содержащий только числа, но в него пытаются добавить строку. Найдите и исправьте строку с ошибкой, чтобы код успешно компилировался и выполнялся.

Найдите ошибку и исправьте
let numbers: number[] = [1, 2, 3];
numbers.push(4);
numbers.push("5");
console.log(numbers);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

4. Сборка кода с массивом

id: 40636_arr_04_build

Из предложенных строк соберите корректную TypeScript-программу, которая создаёт типизированный массив чисел, добавляет в него два числа (1 и 2) в указанном порядке и выводит длину массива. Игнорируйте лишние строки, содержащие синтаксические ошибки или несоответствие типов.

Перетяните в правильном порядке строки из одного блока в другой
let numbers: number[] = [];
numbers.push(1);
numbers.push(2);
console.log(numbers.length);
let numbers = [];
numbers.push('a');
numbers.push(3
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

5. Длина массива после операций

id: 40636_arr_05_give

В приведённом фрагменте кода на TypeScript создаётся массив с начальными элементами, затем выполняются операции добавления и удаления элементов с помощью методов push() и pop(). Определите, какое значение будет выведено в консоль (длина массива после всех операций). Введите одно число без дополнительных символов.

Что должно получиться?
let fruits: string[] = ['apple', 'banana'];
fruits.push('orange');
fruits.push('grape');
fruits.pop();
fruits.push('kiwi');
console.log(fruits.length);
Сообщения
Проверить
Показать подсказку

6. Выбор типа массива

id: 40636_arr_06_select

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

Нужно правильно расставить в пропуски предложенные варианты
let fruits: input1S = ["apple", "banana", "orange"];
let ages: input2S = [25, 30, 35];
let flags: input3S = [true, false, true];
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

7. Поиск массивов в коде

id: 40636_arr_07_click

Внимательно изучите приведённый ниже фрагмент кода на TypeScript. В нём объявлены переменные разных типов: массивы, строки, числа, объекты. Ваша задача — найти и выделить кликом все объявления массивов. Не отмечайте объявления переменных других типов (строк, чисел, объектов). Обратите внимание, что массивы могут быть объявлены с использованием синтаксиса `тип[]` или `Array<тип>`.

Кликните по всем фрагментам, которые подходят под условие задания.
{{let numbers: number[] = [1, 2, 3];~|~t1}}
{{let userName: string = "Alex";~|~t2}}
{{let matrix: number[][] = [[1,2], [3,4]];~|~t3}}
{{let age: number = 25;~|~t4}}
{{let fruits: Array = ["apple", "banana"];~|~t5}}
{{let person: {name: string} = {name: "John"};~|~t6}}
{{let flags: boolean[] = [true, false, true];~|~t7}}
{{let score: number = 100;~|~t8}}
Сообщения
Проверить
Показать подсказку

8. Этапы работы с массивом

id: 40636_arr_08_sequence

Перед вами строки TypeScript-кода, описывающие основные этапы работы с типизированным массивом. Строки перемешаны. Расставьте их в логически правильном порядке, который отражает последовательность действий: от объявления типа массива до итерации по его элементам. Убедитесь, что код будет корректно выполняться в указанном порядке.

Расставьте строки в правильном порядке
let firstElement = numbers[0]; // доступ по индексу
let numbers: number[] = [1, 2, 3]; // инициализация массива
for (let num of numbers) { console.log(num); } // итерация по массиву
numbers.push(4); // добавление элемента
// Объявление типа для массива чисел
// Тип number[] означает массив чисел
Сообщения
Проверить
Показать подсказку

TypeScript: компиляция и запуск

id: 40636_compiler

Типизация массивов в TypeScript через универсальный тип Array<T>. Это альтернативный синтаксис к Type[], но с теми же возможностями и даже более гибкими дженериками! Поэкспериментируй: меняй тип элементов, пробуй добавить неправильные значения, создавай Array<string | number>, Array<{ name: string }>, используй readonly Array<number>, объяви пустой массив с Array<never>. Попробуй сравнить Array<T> и T[] — где удобнее? Меняй код, ломай типы и смотри, как TypeScript мгновенно реагирует!

TS
Запустить тренажёр (TypeScript)
НайтиКурс.Ру