webroad.online
  1. 1Web
  2. 2HTML
  3. 3CSS
  4. 4JavaScript
  5. 5TypeScript
  6. 6Git
  7. 7Unelte
  8. 8React
  9. 9State management
  10. 10Next.js
  11. 11Formulare
  12. 12Date și backend
  13. 13SEO
  14. 14Tailwind CSS
  15. 15Animații
  16. 16Testare
  17. 17Arhitectură
TypeScript · Lecția 1 din 6

Ce este TypeScript

Tipuri verificate înainte de rulare, adnotări, inferență, any vs unknown.

Actualizat

Ce este TypeScript

TypeScript (TS) e JavaScript cu tipuri. Scrii tipuri pentru variabile, parametri și rezultate, iar un program (compilatorul tsc, sau editorul) verifică înainte să rulezi codul că le folosești corect.

function total(price: number, qty: number): number {
  return price * qty
}

total(10, '2')   // ✗ eroare în editor: '2' nu e number — înainte de rulare

Important de înțeles: tipurile dispar la build. Browserul primește JavaScript simplu. TS te ajută doar cât scrii codul.

Compile time (cât scrii) Runtime (când rulează)
Tipurile există? da — verificate de TS nu — șterse
Cine prinde greșelile editorul / tsc userul, în producție

De ce merită

  • Prinzi greșeli (typo, undefined, argument greșit) înainte de rulare.
  • Autocomplete — editorul știe ce câmpuri are un obiect.
  • Refactorizare sigură — redenumești un câmp, TS îți arată toate locurile afectate.
  • Documentație vie — semnătura unei funcții spune ce primește și ce dă.

Costul: puțină sintaxă în plus. Next.js, React și toate librăriile moderne sunt scrise în TS.

Adnotări de tip

let name: string = 'Ana'
let age: number = 30
let active: boolean = true
let tags: string[] = ['js', 'ts']           // array de stringuri
let point: [number, number] = [10, 20]      // tuple — lungime și tipuri fixe

function greet(name: string, excited?: boolean): string {  // ? = parametru opțional
  return excited ? `Salut, ${name}!` : `Salut, ${name}`
}

Inferența — nu scrie tipuri peste tot

TS deduce tipul din valoare:

let count = 0              // TS știe: number
const user = { name: 'Ana' }  // { name: string }
const doubled = [1, 2].map(n => n * 2)   // number[]

Regula practică: scrie tipuri pentru parametrii funcțiilor și pentru datele care vin din afară (API, formulare). Restul lasă-l pe inferență.

Tipurile speciale — diferențe și când

Tip Înseamnă Când
any „oprește verificarea” — orice merge evită; e o gaură în sistem
unknown „nu știu ce e” — trebuie să verifici înainte de folosire date din afară: JSON.parse, catch (e), API-uri
void funcția nu returnează nimic util handler-e, efecte
never valoare imposibilă verificări exhaustive (lecția de union types)
null / undefined absența valorii cu strictNullChecks TS te obligă să le tratezi

any vs unknown:

const a: any = JSON.parse(text)
a.foo.bar()            // TS tace — crapă la runtime

const u: unknown = JSON.parse(text)
u.foo                  // ✗ TS: verifică întâi ce e
if (typeof u === 'object' && u !== null && 'foo' in u) { ... }   // ✓

Literal types

Un tip poate fi o valoare exactă:

let size: 'sm' | 'md' | 'lg' = 'md'
size = 'xl'            // ✗ nu e în listă

Exact așa sunt tipate variantele butonului din aplicația asta.

Configurarea

tsconfig.json controlează verificarea. Cea mai importantă opțiune: "strict": true — activează toate verificările utile (inclusiv null/undefined). Next o pune implicit.

Pe scurt

  • TS = JS + tipuri verificate înainte de rulare; la runtime dispar.
  • Tipuri pe parametri și pe datele din afară; restul — inferență.
  • unknown în loc de any; strict: true mereu.

Surse oficiale

Exerciții

Ți-a fost utilă pagina?

Un click — fără cont.