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:

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

Nüüd kirjutame funktsiooni, mis võtab parameetrina stringi ja tagastab stringi:

typescriptfunction 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):

typescriptfunction 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:

typescriptfunction 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:

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

Nüüd saab, et funktsiooni tulemi tüüp saadakse parameetri tüübist. Kontrollime.

Kutsume funktsiooni numbriga:

typescriptconsole.log( func(3) );   // väljastab 3

Kutsume funktsiooni stringiga:

typescriptconsole.log( func('x') ); // väljastab 'x'
Задание 1

Tehke funktsioon, mis võtab parameetrina kas kaks numbrit või kaks stringi. Funktsioon peab tagastama parameetrite summa.