Lecții din modul (2/2)
Matrice și tuplu
În JavaScript, matricele pot conține orice tip de elemente și pot crește sau micșora dinamic. TypeScript adaugă verificarea statică a tipului pentru a se asigura că colecțiile rămân omogene sau respectă o structură de tip fix.
Matrice (colecții omogene)
În TypeScript, există două moduri echivalente de a defini tipul unui tablou care conține elemente de același tip:
-
Folosind tipul de element urmat de paranteze drepte (
[]):TSconst numbers: number[] = [1, 2, 3]; const strings: string[] = ['a', 'b', 'c']; -
Folosind tipul generic
Array<T>:TSconst numbers: Array<number> = [1, 2, 3];
Ambele sintaxe sunt pe deplin valide, dar prima (type[]) este stilul convențional și cel mai comun. Dacă încercați să inserați o valoare nevalidă (de exemplu, numbers.push("hello") pe o matrice number[]), TypeScript va genera o eroare la timp de compilare.
Tupluri (matrice cu lungime fixă)
Un tuplu este un tip special de matrice care are un număr fix de elemente unde fiecare element are un tip specific predefinit pe baza poziției sale.
De exemplu, pentru a stoca un răspuns HTTP format dintr-un cod de stare (număr) și un mesaj (șir):
const response: [number, string] = [200, 'OK'];În acest caz:
- Primul element (
response[0]) trebuie să fie unnumber. - Al doilea element (
response[1]) trebuie să fie unstring. - Matricea trebuie inițializată cu exact 2 elemente.
Tupluri numai pentru citire (readonly)
Un detaliu important despre tupluri din TypeScript este că, în timpul rulării, acestea sunt matrice JavaScript normale. Aceasta înseamnă că metodele mutative precum .push() sau .pop() sunt disponibile din punct de vedere tehnic și ar putea modifica lungimea tuplului, ocolind parțial verificările de tip.
Pentru a preveni acest comportament și pentru a impune adevărata imuabilitate, putem folosi modificatorul readonly:
const point: readonly [number, number] = [10, 20];
// point.push(30); // Compile-time error!Încercați-l singur
Exercițiul 1: Matrice de numere
Declarați o matrice numită scoruri care conține numai numere și este inițializată cu valorile 90, 85 și 95. Utilizați adnotarea de tip explicit pentru matrice. Nu utilizați orice tip.
Afișează indiciu
Utilizați scorurile const de sintaxă: număr[] = ... sau Matrice<număr>.
Soluție disponibilă după 3 încercări
Exercițiul 2: Tuplu de coordonate 3D
Declarați un punct numit tuplu care reprezintă o coordonată 3D (trei numere pentru X, Y, Z) și este inițializat cu valorile 10, 20, 30. Folosiți adnotare de tip explicit.
Afișează indiciu
Tipul tuplu trebuie să fie [număr, număr, număr].
Soluție disponibilă după 3 încercări
Exercițiul 3: Informații despre locație Tuple
Declarați un tuplu numit locationInfo care reprezintă o coordonată geografică cu numele său. Trebuie să conțină: latitudine (număr), longitudine (număr) și numele orașului (șir). Inițializați-l cu valorile 41.9028, 12.4964 și „Roma”.
Afișează indiciu
Utilizați sintaxa pentru a defini un tuplu cu trei elemente: [număr, număr, șir].
Soluție disponibilă după 3 încercări
Exercițiul 4: Tuplu de intrare în jurnal
Declarați un tuplu numit logEntry care reprezintă o linie de jurnal. Trebuie să conțină în ordine: un marcaj de timp (număr), un nivel de severitate (șir) și un mesaj de eroare (șir). Inițializați-l cu marcajul de timp 1716300000, nivelul „INFO” și mesajul „Aplicația a început”.
Afișează indiciu
Utilizați sintaxa pentru a defini un tuplu cu trei elemente: [număr, șir, șir] și atribuiți valorile specificate.
Soluție disponibilă după 3 încercări