Osnove TypeScripta i statičko tipiziranje u modernom razvoju

Enviado por Anónimo y clasificado en Otras materias

Escrito el en serbocroata con un tamaño de 3,55 KB

Uvod u TypeScript

TypeScript je superset JavaScripta koji uvodi statičke tipove. Ne izvršava se direktno u pregledaču i ne može se navesti direktno u HTML-u, već se prvo mora prevesti (transpilirati) u JavaScript.

Osnovni tipovi i provera grešaka

Osnovni tipovi su: boolean, number, string, array, enum i any. Tip se definiše iza dvotačke (npr. let broj: number, funkcija: fn(): string). Provera tipova se vrši samo tokom pisanja koda (compile-time). Greške u TypeScriptu ne sprečavaju prevođenje u validan JS i ne javljaju se u runtimeu.

Klase i nasleđivanje

Klase deklarišu atribute unapred i podržavaju tri modifikatora pristupa:

  • public (podrazumevano)
  • private
  • protected

Nasleđivanje koristi ključnu reč extends, a roditeljski konstruktor i metode pozivaju se preko super.

Interfejsi i Duck-typing

Interfejsi (interface) nalažu koje atribute i metode objekat ili klasa moraju imati. TypeScript koristi Duck-typing (strukturno tipiziranje) — proverava samo da li prosleđeni objekat sadrži tražena svojstva iz interfejsa. Ako objekat ima i dodatna svojstva, biće prihvaćen ako je prosleđen preko promenljive.

Izuzetak: Ako se objekat sa viškom svojstava prosledi direktno kao literal unutar samog poziva funkcije (npr. {naziv: "a", cena: 20, količina: 30}), TypeScript će prijaviti grešku.

Detaljan pregled ključnih koncepata

Interfejs (Interface)

Interfejs opisuje strukturu (oblik) objekta. Služi samo za proveru tipova u TypeScriptu, ne prevodi se u JavaScript i ne postoji u runtimeu. Za razliku od klasičnog OOP-a gde definiše ponašanje, u TS-u opisuje raspored i tipove svojstava objekta. Interfejsi se mogu nasleđivati (extends) i automatski spajati ako se definišu više puta (declaration merging).

Alijasi (Type Alias)

Alijasi (type) kreiraju novo ime za postojeći tip. Oni ne prave novi tip u memoriji, već samo daju jasniji naziv (npr. type Centimeters = number). Za razliku od interfejsa koji opisuju samo objekte, alijasi mogu imenovati primitive, unije, torke (tuples), funkcije i bilo koji drugi složeni tip.

Unija (Union)

Unija omogućava da promenljiva ima jednu od nekoliko navedenih vrednosti/tipova pomoću operatora | (npr. let id: number | string). Pri radu sa unijom, pre korišćenja specifičnih metoda nekog tipa, česta je potreba za proverom i sužavanjem tipa (type narrowing).

Poređenje i kompatibilnost tipova (Type Compatibility)

TypeScript koristi strukturno tipiziranje (Duck Typing), a ne nominalno tipiziranje kao Java ili C#. Dva tipa se porede isključivo na osnovu njihove unutrašnje strukture (koja svojstva imaju), a ne na osnovu njihovog imena ili deklaracije. Tip A je kompatibilan sa tipom B i može se dodeliti tipu B ako objekat A sadrži bar sva obavezna svojstva koja zahteva tip B. Dodatna svojstva ne smetaju ako je objekat prosleđen preko promenljive.

Entradas relacionadas: