TypeScript-də generiklərin məhdudiyyətlərində tip parametrlərindən istifadə
TypeScript-də həmçinin bir tip parametrinin digər bir tip parametri ilə məhdudlaşdırıla biləcəyi elan edilə bilər. Bu, bir obyektdən xassələri digərinə köçürərkən, əlavə xassə ötürməməyimizə zəmanət etmək lazım olduqda zəruridir.
Gəlin aşağıdakı nümunəyə baxaq. Yenidən
dəyişənin uzunluğunu təyin edən myFunc
funksiyasına qayıdaq:
function myFunc <T> (data: T): T {
console.log(data.length); // səhv
return data;
}
Lakin indi biz istəyirik ki, bu funksiya
yalnız length xassəsi olan tiplərlə
işləsin. Bunun üçün ILength interfeysi
yaradaq və ona length ədəd tipli
xassəsi təyin edək:
interface ILength {
length: number;
}
Sonra, funksiyamızda extends açar sözü
vasitəsilə ILength-dən miras alan
generik tip təyin edək:
function myFunc <T extends ILength> (data: T): T {
console.log(data.length);
return data;
}
Tam kodumuz belə görünür:
interface ILength {
length: number;
}
function myFunc <T extends ILength> (data: T): T {
console.log(data.length);
return data;
}
Gəlin funksiyamızın işini yoxlayaq və sətrin uzunluğunu tapaq:
console.log(myFunc('abcde'));
Yerinə yetirilmiş kodun nəticəsi:
5
'abcde'
İndi isə parametrə massiv ötürək:
console.log(myFunc(['a', 'b', 'c']));
Yerinə yetirilmiş kodun nəticəsi:
3
[ 'a', 'b', 'c' ]