A generikusok korlátozásai TypeScript-ben

Az egyik előző leckében létrehoztunk egy általános típusú függvényt, amelynek ki kellett volna írnia a paraméterként átadott érték hosszát. Azonban a fordítás során hibát kaptunk, mivel nem minden típusnak lehet hossza:

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

Akkor a helyzetet úgy javítottuk ki, hogy az általános típust egy általános tömb típusára cseréltük. De a TypeScript-ben lehetőség van a generikusok korlátozására. Ehhez a szögletes zárójelekben, a T változó után írjuk a extends kulcsszót. Utána kapcsos zárójelekben írjuk fel az új str változót string típussal. A függvény többi kódja változatlan marad:

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

Kiderül, hogy az általános típust örökli a str változó típusa, amely a kapcsos zárójelben van megadva. Most ellenőrizzük a függvényünk működését és hozzunk létre egy myStr változót, amely a str típusra hivatkozik, és adjunk neki értéket kapcsos zárójelekben:

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

Hívjuk meg a myFunc függvényt, ne felejtsük el ismét megadni a típusát, és adjuk át a myStr változót paraméterként:

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

A leckében tárgyalt példa alapján írj egy függvényt egy numerikus tömb hosszának megtalálására.