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.