Ce face array (T[] și Array<T>)
Un tablou are toate elementele de același tip, scris în două feluri echivalente: number[] sau Array<number>. Forma scurtă este cea obișnuită. Pentru elemente de mai multe tipuri folosești un union în paranteze: (string | number)[].
readonly number[] (sau ReadonlyArray<number>) este un tablou din care poți doar citi: push, pop, sort și atribuirea a[0] = ... sunt erori. Folosește-l la parametrii funcțiilor care nu trebuie să modifice tabloul primit.
Metodele tablourilor (map, filter, reduce, find…) sunt cele din JavaScript, explicate în secțiunea JavaScript. TypeScript le dă tipuri: map pe un number[] cu o funcție care returnează text dă string[]. Citirea note[5] are tipul number chiar dacă elementul nu există; opțiunea noUncheckedIndexedAccess schimbă tipul în number | undefined. Pentru o listă cu lungime și tipuri fixe pe poziții vezi tuple.
Exemple
Exemplul 1: Cele două forme și tipurile deduse
const note: number[] = [9, 10, 7];
const orase: Array<string> = ["Iași", "Cluj", "Brașov"];
const amestec: (string | number)[] = ["Ana", 19, "Iași"];
const texte = note.map((n) => `nota ${n}`); // string[]
const mari = note.filter((n) => n >= 9); // number[]
console.log(texte, mari);
console.log(orase.join(", "), amestec.length);
Rezultat
[ 'nota 9', 'nota 10', 'nota 7' ] [ 9, 10 ]
Iași, Cluj, Brașov 3
Exemplul 2: Tablou readonly ca parametru
Funcția sortează o copie (toSorted), deci tabloul original rămâne neschimbat.
function clasament(note: readonly number[]): number[] {
return note.toSorted((a, b) => b - a);
}
const note = [7, 10, 9];
console.log(clasament(note));
console.log(note);
Rezultat
[ 10, 9, 7 ]
[ 7, 10, 9 ]
Exemplul 3: Modificare interzisă pe readonly
function adauga(note: readonly number[]) {
note.push(10);
}
adauga([9]);
Eroarea afișată de tsc
exemplu.mts(2,10): error TS2339: Property 'push' does not exist on type 'readonly number[]'.
Greșeli frecvente
- Scrii
string | number[]și vrei un tablou mixt. Fără paranteze înseamnă „un text SAU un tablou de numere”; scrie(string | number)[]. - Crezi că
note[10]este sigur pentru că tipul estenumber. Elementul poate lipsi; verifică lungimea sau activeazănoUncheckedIndexedAccess.
Comenzi înrudite
tuple: Un tablou cu număr fix de elemente, în care fiecare poziție are tipul ei, de exemplu [nume, notă].readonly: Marchează o proprietate care primește valoare o singură dată și nu mai poate fi modificată după aceea.generics (<T>): Parametri de tip: o funcție sau clasă scrisă o dată, care funcționează cu orice tip și păstrează tipul exact.union (|): Un tip care acceptă valori din mai multe tipuri: A | B înseamnă fie A, fie B.