Generieke variabelen in TypeScript
Voor een beter begrip van het concept van generieken laten we onze eerste functie creëren - identiteitsfunctie. Zo'n functie retourneert exact wat er werd doorgegeven - met hetzelfde type.
Laten we eerst de varianten van onze functie afzonderlijk schrijven.
Laten we een functie schrijven die een getal als parameter accepteert en een getal retourneert:
function func(data: number): number {
return data;
}
Laten we nu een functie schrijven die een string als parameter accepteert en een string retourneert:
function func(data: string): string {
return data;
}
Stel dat we nu willen dat één functie dit allemaal doet. We willen dus generalisatie uitvoeren.
Hiervoor gebruiken we een generieke variabele,
die het gegevenstype opslaat. Zo'n variabele wordt gedeclareerd
in punthaken voor de ronde haakjes
met de functieparameters. Laten we zo'n
variabele declareren, met de naam T
(elk willekeurig naam is mogelijk):
function func <T>(hier parameters) {
return data;
}
Hierna hebben we de variabele T beschikbaar,
die we kunnen gebruiken om het type van de parameter erin op te slaan,
en vervolgens aan te geven als het
retourtype.
Laten we het type van onze parameter specificeren als onze variabele:
function func <T>(data: T) {
return data;
}
Het resultaat is dat de parameter kan worden doorgegeven
in elk willekeurig type, en dit type wordt opgeslagen in onze
variabele T.
Laten we nu de waarde van variabele T
gebruiken om het resultaattype van de functie aan te geven:
function func <T>(data: T): T {
return data;
}
Nu zal het type van het functieresultaat worden afgeleid van het type van de parameter. Laten we dit testen.
Roep de functie aan met een getal:
console.log( func(3) ); // geeft 3 weer
Roep de functie aan met een string:
console.log( func('x') ); // geeft 'x' weer
Maak een functie die als parameter ofwel twee getallen, ofwel twee strings accepteert. Als resultaat moet de functie de som van de parameters retourneren.