string, number, boolean în TypeScript

Tipuri de bază TypeScript 1.0

Cele trei tipuri primitive folosite cel mai des: texte, numere (întregi și zecimale) și valori adevărat/fals.

Sintaxă
let nume: string = "Ana";
let nota: number = 9.5;
let promovat: boolean = true;

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: String cu majusculă. Funcționează pe jumătate și dă erori ciudate; folosește string.
  • Aduni un număr cu un text citit de la tastatură: "9" + 1 dă "91". Este permis (lipire de texte), deci convertește cu Number() înainte.
  • Compari zecimale cu ===: 0.1 + 0.2 === 0.3 este false. 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.