Limitations des génériques en TypeScript

Dans l'une des leçons précédentes, nous avons créé une fonction de type générique qui devait afficher la longueur du paramètre qui lui était transmis. Cependant, lors de la compilation, une erreur est survenue, car tous les types ne peuvent pas avoir de longueur :

typescriptfunction myFunc < T > (data: T): T {
  console.log(data.length); // erreur
  return data;
}

À cette occasion, nous avons corrigé la situation en modifiant le type générique en type de tableau générique. Mais TypeScript offre la possibilité de créer des contraintes sur les génériques. Pour cela, après la variable T dans les chevrons, nous écrivons le mot-clé extends. Après celui-ci, dans des accolades, nous enregistrons une nouvelle variable str de type chaîne de caractères. Le reste du code de la fonction restera inchangé :

typescriptfunction myFunc <T extends {str: string}> (data: T): void {
  console.log(data.str.length);
}

Ainsi, le type générique hérite du type de la variable str, spécifiée dans les accolades. Maintenant, vérifions le fonctionnement de notre fonction et créons une variable myStr, se référant au type str, et assignons-lui une valeur entre accolades :

typescriptlet myStr: {str: string} = {str: 'abcde'};

Appelons la fonction myFunc, sans oublier de spécifier à nouveau son type et passons la variable myStr comme paramètre :

typescriptmyFunc <{str: string}> (myStr);
Задание 1

Sur la base de l'exemple examiné dans la leçon, définissez une fonction pour trouver la longueur d'un tableau numérique.