TypeScript හි සාමාන්ය පරාමිතීන් සීමා කිරීම්වලදී සාමාන්ය පරාමිතීන් භාවිතා කිරීම
TypeScript හි, එක් සාමාන්ය පරාමිතියක් තවත් සාමාන්ය පරාමිතියකට සීමා වන පරිදි ප්රකාශ කිරීමේ හැකියාව ද ඇත. වස්තුවක ගුණාංග තවත් වස්තුවකට පිටපත් කිරීමට සිදු වූ විට, අප අනවශ්ය ගුණාංගයක් යොමු නොකරන බවට වග බලා ගැනීමට මෙය අවශ්ය වේ.
පහත උදාහරණය බලමු. නැවතත් විචල්යයක දිග නිර්වචනය කරන myFunc ශ්රිතය වෙත ආපසු යමු:
function myFunc <T> (data: T): T {
console.log(data.length); // දෝෂය
return data;
}
කෙසේ වෙතත්, දැන් අපට අවශ්ය වන්නේ මෙම ශ්රිතය length ගුණාංගය ඇති වර්ග සමඟ පමණක් ක්රියා කිරීමයි. මේ සඳහා, length ගුණාංගය සංඛ්යාත්මක වර්ගයක් ලෙස අර්ථ දක්වා ඇති ILength අතුරුමුහුණත සකස් කරමු:
interface ILength {
length: number;
}
ඊළඟට, අපගේ ශ්රිතයේ, extends යතුරු වදන හරහා ILength වලින් උරුම වන සාමාන්ය වර්ගයක් නිර්වචනය කරමු:
function myFunc <T extends ILength> (data: T): T {
console.log(data.length);
return data;
}
අපගේ සම්පූර්ණ කේතය මේ ආකාරයෙන් පෙනේ:
interface ILength {
length: number;
}
function myFunc <T extends ILength> (data: T): T {
console.log(data.length);
return data;
}
අපගේ ශ්රිතයේ ක්රියාකාරිත්වය පරීක්ෂා කර අනුක්රමයක දිග සොයා බලමු:
console.log(myFunc('abcde'));
ක්රියාත්මක කරන ලද කේතයේ ප්රතිඵලය:
5
'abcde'
දැන් පරාමිතියට අරාවක් යොමු කරමු:
console.log(myFunc(['a', 'b', 'c']));
ක්රියාත්මක කරන ලද කේතයේ ප්රතිඵලය:
3
[ 'a', 'b', 'c' ]