Ce face string, number, boolean
string este tipul textelor, scrise între ghilimele simple, duble sau între backtick-uri (template string). number este tipul tuturor numerelor: întregi, zecimale, negative, plus valorile speciale NaN și Infinity; nu există tipuri separate pentru int și float. boolean are două valori: true și false.
Scrie numele cu literă mică. String, Number și Boolean cu majusculă sunt obiectele-ambalaj din JavaScript, nu tipurile primitive, și nu trebuie folosite ca tipuri.
Metodele acestor valori (toUpperCase, toFixed, split…) sunt cele din JavaScript; vezi secțiunea JavaScript. TypeScript doar verifică că le apelezi pe tipul potrivit. Pentru numere întregi foarte mari există bigint.
Exemple
Exemplul 1: Cele trei tipuri în același program
const nume: string = "Ana Popescu";
const note: number[] = [9, 10, 8.5];
const medie: number = note.reduce((s, n) => s + n, 0) / note.length;
const promovat: boolean = medie >= 5;
console.log(`${nume.toUpperCase()}: medie ${medie.toFixed(2)}, promovat: ${promovat}`);
console.log(0.1 + 0.2, 7 / 2, 10 / 0, Number("abc"));
Rezultat
ANA POPESCU: medie 9.17, promovat: true
0.30000000000000004 3.5 Infinity NaN
Exemplul 2: Conversii explicite
TypeScript nu face conversii automate între tipuri în atribuiri. Number(), String() și Boolean() convertesc la rulare.
const text: string = "42";
const numar: number = Number(text);
const inapoi: string = String(numar + 1);
const areText: boolean = Boolean(text);
console.log(numar + 1, inapoi, areText);
Rezultat
43 43 true
Exemplul 3: Operație care nu are sens
În JavaScript, "5" * true dă 5. TypeScript nu acceptă înmulțirea unui text cu un boolean.
const a: string = "5";
const b: boolean = true;
console.log(a * b);
Eroarea afișată de tsc
exemplu.mts(3,13): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
exemplu.mts(3,17): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
Greșeli frecvente
- Scrii
let nume: Stringcu majusculă. Funcționează pe jumătate și dă erori ciudate; foloseștestring. - Aduni un număr cu un text citit de la tastatură:
"9" + 1dă"91". Este permis (lipire de texte), deci convertește cuNumber()înainte. - Compari zecimale cu
===:0.1 + 0.2 === 0.3estefalse. Rotunjește sau compară cu o toleranță.
Comenzi înrudite
bigint și symbol: bigint ține numere întregi oricât de mari; symbol este o valoare unică, folosită de obicei drept cheie de proprietate.tipuri literale: Un tip care acceptă o singură valoare exactă, de exemplu „Iași” sau 3; combinate în union dau liste de valori permise.let și const cu tipuri: Declari variabile cu let (se pot schimba) sau const (nu se pot reatribui) și le pui tipul după două puncte.typeof guard: Verificarea typeof x === „string” (sau „number”, „boolean”…) restrânge tipul la primitivul respectiv.