TypeScript-da generikleriň çäklerinde tip parametrlerini ulanmak
TypeScript-de şeýle hem bir tip parametrini beýleki tip parametr bilen çäklendirip bildirmek mümkinçiligi bar. Bu, bir objektiň aýratynlyklaryny beýleki bir objekte göçürmek gerek bolanda zerur bolýar, şol bir wagtyň özünde goşmaça aýratynlyk geçirmekden hem goranmaly.
Geliň aşakdaky mysala seredeliň. Ýene-de
üzüňiň uzynlygyny kesgitleýän myFunc
funksiýasyna gaýdalyň:
function myFunc <T> (data: T): T {
console.log(data.length); // säwlik
return data;
}
Emma indi biz bu funksiýanyň diňe
length aýratynlygy bolan tip bilen
işlemegini isleýäris. Bunuň üçin ILength
interfeýsini düzeliň, we oňa san tipindäki
length aýratynlygyny belleýeliň:
interface ILength {
length: number;
}
Indi öz funksiýamyzda extends açar sözi
arkaly ILength-den miras alýan umumy
tip belleýeliň:
function myFunc <T extends ILength> (data: T): T {
console.log(data.length);
return data;
}
Biziň doly kodymyz şeýle görünýär:
interface ILength {
length: number;
}
function myFunc <T extends ILength> (data: T): T {
console.log(data.length);
return data;
}
Geliň funksiýamyzyň işini barlaýalyň we setiriň uzynlygyny tapalyň:
console.log(myFunc('abcde'));
Ýerine ýetirilen kodyň netijesi:
5
'abcde'
Indi bolsa parametre massiw geçireliň:
console.log(myFunc(['a', 'b', 'c']));
Ýerine ýetirilen kodyň netijesi:
3
[ 'a', 'b', 'c' ]