Middle
Mis on geneerilised ravimid?
sobes.tech AI
Vastus AI-lt
TypeScripti generics võimaldavad luua komponente (funktsioone, klasse, liideseid), mis saavad töötada erinevate andmetüüpidega, säilitades samal ajal tüübi turvalisuse. Nad võimaldavad kirjutada paindlikumat ja taaskasutatavat koodi, ilma et kaotaksid staatilise tüübikontrolli eeliseid. Lihtsaim näide on generikate kasutamine funktsioonides, mis tagastavad sama tüübi, mis argumendina anti.
// Funktsioon, mis võtab vastu mis tahes tüüpi argumenti ja tagastab selle
function identity<T>(arg: T): T {
return arg;
}
// Kasutamine konkreetse tüübiga – string
let outputString = identity<string>("rida"); // outputString tüüp on string
// Kasutamine automaatse tüübiväljaga – number
let outputNumber = identity(123); // outputNumber tüüp on number
Generikate kasutamine on võimalik ka klassides:
// Klass, mis töötab mis tahes tüüpi elementidega
class GenericBox<T> {
value: T;
constructor(initialValue: T) {
this.value = initialValue;
}
}
// Loo GenericBox string-tüübiga
let stringBox = new GenericBox<string>("tere");
// Loo GenericBox boolean-tüübiga
let booleanBox = new GenericBox(true); // TypeScript väljastab tüübi
Ja liideste puhul:
// Generikaga liides
interface KeyValuePair<K, V> {
key: K;
value: V;
}
// Kasutamine konkreetsete tüüpidega
let stringNumberPair: KeyValuePair<string, number> = { key: "vanus", value: 30 };
Generikate eelised:
- Koodi taaskasutus: Ühe struktuuri saab kasutada erinevate tüüpidega.
- Tüüpide turvalisus: Kompilaator kontrollib tüüpe, vältides potentsiaalseid vigu.
- Lugemise ja hoolduse lihtsus: Kood muutub arusaadavamaks, kuna on selgelt näha, milliste tüüpidega komponent töötab.
Generikad on sageli kasutusel teekides ja raamistikus, nagu React (prop-tüüpide tüübitamine), Redux (poe tüübitamine) ning andmekogumitega töötamisel.