let și const cu tipuri în TypeScript

Tipuri de bază TypeScript 1.4

Declari variabile cu let (se pot schimba) sau const (nu se pot reatribui) și le pui tipul după două puncte.

Sintaxă
let nume: Tip = valoare;
const nume: Tip = valoare;
let nume: Tip;            // fără valoare, se atribuie mai târziu

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ă const face obiectul neschimbabil. Interzice doar o nouă atribuire a variabilei; pentru proprietăți folosește readonly sau as 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.