⊗tsSpGnTV 30 of 37 menu

Generičke promenljive u TypeScript-u

Za bolje razumevanje koncepta generika hajde da napravimo našu prvu funkciju - identičnu funkciju. Takva funkcija vraća tačno ono što joj je prosleđeno - sa istim tipom.

Hajde za početak da napišemo varijante naše funkcije odvojeno.

Napišimo funkciju koja kao parametar prima broj i vraća broj:

function func(data: number): number { return data; }

Sada napišimo funkciju koja kao parametar prima string i vraća string:

function func(data: string): string { return data; }

Recimo sada da želimo da sve to radi jedna funkcija. To jest, želimo da izvršimo generalizaciju.

Za to koristimo generičku promenljivu, koja čuva u sebi tip podataka. Takva promenljiva se deklariše u uglastim zagradama ispred okruglih zagrada sa parametrima funkcije. Hajde da deklarišemo takvu promenljivu, dajući joj ime T (može bilo koje):

function func <T>(ovde parametri) { return data; }

Nakon toga ćemo imati promenljivu T, koju možemo koristiti da u nju smestimo tip parametra, a zatim ga navedemo kao povratnu vrednost.

Navedimo tip našem parametru u obliku naše promenljive:

function func <T>(data: T) { return data; }

Ispostavlja se da parametar može biti prosleđen u bilo kom tipu, i taj tip će biti sačuvan u našu promenljivu T.

Sada iskoristimo vrednost promenljive T kao naznaku rezultata funkcije:

function func <T>(data: T): T { return data; }

Sada će se ispostaviti da tip rezultata funkcije dolazi iz tipa parametra. Hajde da proverimo.

Pozovimo funkciju sa brojem:

console.log( func(3) ); // ispisuje 3

Pozovimo funkciju sa stringom:

console.log( func('x') ); // ispisuje 'x'

Napravite funkciju koja kao parametar prima ili dva broja, ili dva stringa. Svojim rezultatom funkcija treba da vrati zbir parametara.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij