Перейти к основному содержимому

Массивы TypeScript

В TypeScript есть особый синтаксис для указания типа массива: напишите тип элемента, а после него [].

Если массивы для вас в новинку, сначала прочитайте про массивы в JavaScript.

Пример

names имеет тип string[], поэтому он принимает строки, но добавление числа было бы ошибкой.

Prompt
Покажите синтаксис типизации массива строк. Объявите пустую константу names с типом string[], добавьте в неё "Dylan" (без ошибки) и оставьте закомментированную строку names.push(3) с комментарием, поясняющим, что она вызвала бы ошибку, потому что число нельзя присвоить типу string. Ничего не выводится.
Вывод: программа на TypeScript и захваченный вывод

Readonly

Ключевое слово readonly запрещает изменять массив после его создания.

Пример

Так как names имеет тип readonly string[], у него нет методов, которые его изменяют, например push — вызов такого метода приводит к ошибке компиляции.

Prompt
Покажите, что модификатор readonly запрещает изменять массив. Объявите names с типом readonly string[] со значением ["Dylan"], затем вызовите names.push("Jack") — компилятор должен сообщить "Property 'push' does not exist on type 'readonly string[]'". Добавьте комментарий, предлагающий читателю убрать readonly и попробовать снова.
Вывод: программа на TypeScript и захваченный вывод

Вывод типов

Если при создании массива в нём уже есть значения, TypeScript может вывести (определить) его тип по ним.

Пример

Для numbers выводится тип number[]. Добавить ещё одно число можно, а добавить строку — ошибка; чтение numbers[0] даёт значение типа number.

Prompt
Покажите, как TypeScript выводит тип number[] для литерала массива и следит за его соблюдением. Объявите numbers = [1, 2, 3] без аннотации типа, добавьте 4 (без ошибки), затем добавьте строку "2" — эта строка должна вызвать ошибку "Argument of type 'string' is not assignable to parameter of type 'number'". Наконец, присвойте numbers[0] переменной head типа number (без ошибки).
Вывод: программа на TypeScript и захваченный вывод