Variables de type générique en TypeScript

Pour mieux comprendre le concept des génériques, créons notre première fonction - une fonction identité. Une telle fonction retourne exactement ce qui lui a été passé - avec le même type.

Commençons par écrire les variantes de notre fonction séparément.

Écrivons une fonction qui prend un nombre en paramètre et retourne un nombre :

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

Maintenant, écrivons une fonction qui prend une chaîne de caractères en paramètre et retourne une chaîne :

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

Supposons maintenant que nous voulons que tout cela soit fait par une seule fonction. C'est-à-dire que nous voulons effectuer une généralisation.

Pour cela, nous utilisons une variable de type, qui conserve le type de données. Une telle variable est déclarée dans des chevrons avant les parenthèses des paramètres de la fonction. Déclarons une telle variable, en lui donnant le nom T (n'importe quel nom est possible) :

typescriptfunction func <T>(ici les paramètres) {
  return data;
}

Après cela, nous aurons une variable T, qui pourra être utilisée pour y stocker le type du paramètre, puis le spécifier comme type de retour.

Spécifions le type de notre paramètre en utilisant notre variable :

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

Il en résultera que le paramètre peut être passé avec n'importe quel type, et ce type sera sauvegardé dans notre variable T.

Maintenant, utilisons la valeur de la variable T comme indication du résultat de la fonction :

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

Maintenant, le type de résultat de la fonction sera déduit du type du paramètre. Vérifions.

Appelons la fonction avec un nombre :

typescriptconsole.log( func(3) );   // affichera 3

Appelons la fonction avec une chaîne :

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

Créez une fonction qui prend en paramètre soit deux nombres, soit deux chaînes de caractères. La fonction doit retourner la somme des paramètres.