Ce face let și const cu tipuri
În TypeScript declari variabilele la fel ca în JavaScript, cu let și const, dar poți adăuga o adnotare de tip: două puncte și numele tipului, de exemplu let varsta: number = 20;. De acum, compilatorul nu te lasă să pui în variabilă altceva decât un număr.
const înseamnă că variabila nu poate primi altă valoare. Nu înseamnă că obiectul din ea nu se poate modifica: la un const elev = { nume: "Ana" } poți schimba elev.nume. Pentru obiecte care nu se modifică deloc vezi readonly și as const.
Adnotarea este opțională: dacă scrii valoarea pe loc, TypeScript deduce singur tipul (vezi inferența tipurilor). Pune tipul explicit când variabila primește valoarea mai târziu sau când vrei un tip mai larg decât valoarea inițială. Cuvântul var funcționează și el, dar are reguli vechi de vizibilitate; folosește let și const.
Parametri
| Parametru | Descriere |
|---|---|
nume |
Numele variabilei. |
Tip |
Tipul permis: string, number, o interfață, un union etc. Poate lipsi când TypeScript îl deduce din valoare. |
valoare |
Valoarea inițială. Obligatorie la const. |
Exemple
Exemplul 1: Variabile cu tip explicit
Variabila oras primește valoarea mai târziu, deci tipul se scrie explicit. Fiecare atribuire este verificată.
let nume: string = "Ana";
let varsta: number = 19;
const bursier: boolean = true;
let oras: string;
oras = "Iași";
varsta = varsta + 1;
console.log(nume, varsta, bursier, oras);
Rezultat
Ana 20 true Iași
Exemplul 2: Atribuire cu tipul greșit
Variabila are tipul number, iar textul "douăzeci" este string. Codul nu se compilează.
let varsta: number = 19;
varsta = "douăzeci";
console.log(varsta);
Eroarea afișată de tsc
exemplu.mts(2,1): error TS2322: Type 'string' is not assignable to type 'number'.
Exemplul 3: const nu permite reatribuirea
La const nu poți atribui din nou variabila, dar poți modifica proprietățile obiectului din ea.
const elev = { nume: "Ana", nota: 9 };
elev.nota = 10; // permis: se schimbă o proprietate
console.log(elev);
const pret = 12.5;
pret = 15; // eroare: pret este const
console.log(pret);
Eroarea afișată de tsc
exemplu.mts(6,1): error TS2588: Cannot assign to 'pret' because it is a constant.
Greșeli frecvente
- Crezi că
constface obiectul neschimbabil. Interzice doar o nouă atribuire a variabilei; pentru proprietăți foloseștereadonlysauas const. - Declari
let x;fără tip și fără valoare. TypeScript îi dă tipul care urmărește atribuirile, dar codul devine greu de citit; scrie tipul:let x: number;. - Folosești o variabilă
letînainte să-i dai valoare. În modul strict, tsc dă eroarea Variable ‘x’ is used before being assigned.
Comenzi înrudite
inferența tipurilor: TypeScript deduce singur tipul variabilelor și al rezultatelor din valorile pe care le scrii, fără adnotări.string, number, boolean: Cele trei tipuri primitive folosite cel mai des: texte, numere (întregi și zecimale) și valori adevărat/fals.readonly: Marchează o proprietate care primește valoare o singură dată și nu mai poate fi modificată după aceea.as const: Face un literal complet readonly și păstrează valorile exacte ca tipuri: „Iași” în loc de string.