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:
function 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:
function 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:
let 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:
myFunc <{str: string}> (myStr);
A leckében tárgyalt példa alapján írj egy függvényt egy numerikus tömb hosszának megtalálására.