Tüüpilised muutujad TypeScriptis
Geneerikute kontseptsiooni paremaks mõistmiseks loome oma esimese funktsiooni - identiteedifunktsiooni. Selline funktsioon tagastab täpselt selle, mis sellele anti - sama tüübiga.
Alustuseks kirjutame oma funktsiooni variandid eraldi.
Kirjutame funktsiooni, mis võtab parameetrina numbri ja tagastab numbri:
function func(data: number): number {
return data;
}
Nüüd kirjutame funktsiooni, mis võtab parameetrina stringi ja tagastab stringi:
function func(data: string): string {
return data;
}
Oletame nüüd, et tahame, et seda kõike teeks üks funktsioon. See tähendab, et me soovime teha üldistamist.
Selleks kasutame tüüpilist
muutujat, mis salvestab endasse
andmetüübi. Selline muutuja deklareeritakse
nurksulgudes enne funktsiooni parameetritega
ümaraid sulgusid. Deklareerime sellise
muutuja, andes sellele nimeks T
(võib olla suvaline):
function func <T>(siin parameetrid) {
return data;
}
Pärast seda on meil muutuja T,
mida saab kasutada parameetri tüübi
sisestamiseks ja seejärel määrata
seda tagastatava väärtusena.
Määrame oma parameetri tüübiks meie muutuja:
function func <T>(data: T) {
return data;
}
Selgub, et parameetri saab edastada
mis tahes tüübiga ja see tüüp salvestub
meie muutujasse T.
Nüüd kasutame muutuja T väärtust
funktsiooni tulemuse määramiseks:
function func <T>(data: T): T {
return data;
}
Nüüd saab, et funktsiooni tulemi tüüp saadakse parameetri tüübist. Kontrollime.
Kutsume funktsiooni numbriga:
console.log( func(3) ); // väljastab 3
Kutsume funktsiooni stringiga:
console.log( func('x') ); // väljastab 'x'
Tehke funktsioon, mis võtab parameetrina kas kaks numbrit või kaks stringi. Funktsioon peab tagastama parameetrite summa.