Модульні уроки (2/2)
Масиви та кортежі
У JavaScript масиви можуть містити будь-які типи елементів і можуть динамічно збільшуватися або звужуватися. TypeScript додає статичну перевірку типів, щоб переконатися, що колекції залишаються однорідними або дотримуються структури фіксованого типу.
Масиви (однорідні колекції)
У TypeScript є два еквівалентні способи визначення типу масиву, що містить елементи одного типу:
-
Використовуючи тип елемента з квадратними дужками (
[]):TSconst numbers: number[] = [1, 2, 3]; const strings: string[] = ['a', 'b', 'c']; -
Використання загального типу
Array<T>:TSconst numbers: Array<number> = [1, 2, 3];
Обидва синтаксиси є цілком дійсними, але перший (type[]) є звичайним і найпоширенішим стилем. Якщо ви спробуєте вставити недійсне значення (наприклад, numbers.push("hello") в масив number[]), TypeScript створить помилку під час компіляції.
Кортежі (масиви фіксованої довжини)
Кортеж — це особливий тип масиву, який має фіксовану кількість елементів, де кожен елемент має попередньо визначений тип на основі його позиції.
Наприклад, щоб зберегти HTTP-відповідь, що складається з коду стану (число) і повідомлення (рядок):
const response: [number, string] = [200, 'OK'];У цьому випадку:
- Перший елемент (
response[0]) має бутиnumber. - Другий елемент (
response[1]) має бутиstring. - Масив має бути ініціалізований рівно 2 елементами.
Кортежі лише для читання (readonly)
Важливою деталлю кортежів у TypeScript є те, що під час виконання вони є звичайними масивами JavaScript. Це означає, що такі мутаційні методи, як .push() або .pop(), технічно доступні та можуть змінювати довжину кортежу, частково обходячи перевірку типу.
Щоб запобігти такій поведінці та забезпечити справжню незмінність, ми можемо використати модифікатор readonly:
const point: readonly [number, number] = [10, 20];
// point.push(30); // Compile-time error!Спробуйте самі
Вправа 1: масив чисел
Оголошіть масив під назвою scores, який містить лише числа та ініціалізований значеннями 90, 85 і 95. Використовуйте явну анотацію типу для масиву. Не використовуйте жодного типу.
Показати підказку
Використовуйте синтаксис const scores: число[] = ... або масив<число>.
Рішення доступне після 3 спроб
Вправа 2: Тривимірний кортеж координат
Оголошіть кортеж з іменем point, який представляє тривимірну координату (три числа для X, Y, Z) і ініціалізується значеннями 10, 20, 30. Використовуйте явну анотацію типу.
Показати підказку
Тип кортежу має бути [число, число, число].
Рішення доступне після 3 спроб
Вправа 3: Кортеж інформації про місцезнаходження
Оголошіть кортеж з іменем locationInfo, який представляє географічну координату з його назвою. Він повинен містити: широту (число), довготу (число) і назву міста (рядок). Ініціалізуйте його значеннями 41.9028, 12.4964 і «Рим».
Показати підказку
Використовуйте синтаксис, щоб визначити кортеж із трьома елементами: [число, число, рядок].
Рішення доступне після 3 спроб
Вправа 4: Кортеж записів журналу
Оголошіть кортеж з іменем logEntry, що представляє рядок журналу. Він повинен містити по порядку: мітку часу (число), рівень серйозності (рядок) і повідомлення про помилку (рядок). Ініціалізуйте його міткою часу 1716300000, рівнем «INFO» і повідомленням «Програму запущено».
Показати підказку
Використовуйте синтаксис, щоб визначити триелементний кортеж: [число, рядок, рядок] і присвоїти вказані значення.
Рішення доступне після 3 спроб