Variablat e Tipit në TypeScript
Për një kuptim më të mirë të konceptit të gjenerikëve le të krijojmë funksionin tonë të parë - funksionin e identitetit. Ky funksion kthen saktësisht atë që i është kaluar - me të njëjtin tip.
Le të shkruajmë fillimisht variantet e funksionit tonë veç e veç.
Le të shkruajmë një funksion që pranon një numër si parametër dhe kthen një numër:
function func(data: number): number {
return data;
}
Tani le të shkruajmë një funksion që pranon një varg si parametër dhe kthen një varg:
function func(data: string): string {
return data;
}
Supozoni tani që duam që e njëjta funksion të bëjë të gjitha këto. Domethënë, ne duam të kryejmë gjenerifikim.
Për këtë, ne përdorim një variabël të tipit,
që ruan brenda saj tipin e të dhënave. Një variabël e tillë deklarohet
në kllapat këndore përpara kllapave të rrumbullakëta
me parametrat e funksionit. Le të deklarojmë
një variabël të tillë, duke i dhënë emrin T
(mund të jetë çfarëdo):
function func <T>(këtu parametrat) {
return data;
}
Pas kësaj, ne do të kemi një variabël T,
që mund të përdoret për të ruajtur tipin e parametrit, dhe pastaj
të përcaktohet atë si tip i vlerës së kthyer.
Le t'i caktojmë parametrit tonë tipin si variablin tonë:
function func <T>(data: T) {
return data;
}
Do të ndodhë që parametri mund të kalohet
në çdo tip, dhe ai tip do të ruhet në variablin tonë T.
Tani le të përdorim vlerën e variablit T
për të përcaktuar rezultatin e funksionit:
function func <T>(data: T): T {
return data;
}
Tani do të ndodhë që tipi i rezultatit të funksionit do të merret nga tipi i parametrit. Le ta testojmë.
Le ta thërrasim funksionin me një numër:
console.log( func(3) ); // nxjerr 3
Le ta thërrasim funksionin me një varg:
console.log( func('x') ); // nxjerr 'x'
Krijoni një funksion që si parametër pranon ose dy numra, ose dy vargje. Si rezultat, funksioni duhet të kthejë shumën e parametrave.