Salt la conținutul principal
Modulul 1 · Lecția 2 din 22/14 în curs~10 min
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:

  1. Folosind tipul de element urmat de paranteze drepte ([]):

    TS
    const numbers: number[] = [1, 2, 3];
    const strings: string[] = ['a', 'b', 'c'];
  2. Folosind tipul generic Array<T>:

    TS
    const 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):

TS
const response: [number, string] = [200, 'OK'];

În acest caz:

  • Primul element (response[0]) trebuie să fie un number.
  • Al doilea element (response[1]) trebuie să fie un string.
  • 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:

TS
const point: readonly [number, number] = [10, 20];
// point.push(30); // Compile-time error!

Încercați-l singur

Exercițiul 1: Matrice de numere

Exercițiu#ts.m1.l2.e1
Încercări: 0Se încarcă…

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.

Se încarcă editorul...
Afișează indiciu

Utilizați scorurile const de sintaxă: număr[] = ... sau Matrice&lt;număr&gt;.

Soluție disponibilă după 3 încercări

Exercițiul 2: Tuplu de coordonate 3D

Exercițiu#ts.m1.l2.e2
Încercări: 0Se încarcă…

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.

Se încarcă editorul...
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

Exercițiu#ts.m1.l2.e3
Încercări: 0Se încarcă…

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”.

Se încarcă editorul...
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

Exercițiu#ts.m1.l2.e4
Încercări: 0Se încarcă…

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”.

Se încarcă editorul...
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