টাইপস্ক্রিপ্টে ফাংশন ওভারলোডিং
কখনও কখনও এমন ফাংশন দেখা যায় যা পাস করা প্যারামিটারের উপর নির্ভর করে মান ফেরত দেয়। এর জন্য টাইপস্ক্রিপ্টে ফাংশন ওভারলোডিং ব্যবহার করা হয়। এটি ফাংশনের বিভিন্ন সিগনেচার বিকল্প নির্দিষ্ট করতে দেয়।
আসুন একটি উদাহরণ দেখি। ধরা যাক আমাদের একটি ফাংশন আছে যা স্ট্রিংয়ের অক্ষরগুলিকে বর্ণের অ্যারেতে ভাঙ্গে:
function splitStr(str: string): string[] {
return str.split('');
}
ধরা যাক আমাদের আরও একটি ফাংশন আছে যা সংখ্যার অঙ্কগুলিকে ডিজিটের অ্যারেতে ভাঙ্গে:
function splitNum(num: number): number[] {
let str: string = String(num);
let arr: string[] = str.split('');
return arr.map(elem => +elem);
}
আসুন উভয় ফাংশনকে একটিতে একত্রিত করি। নতুন ফাংশনটি প্যারামিটারের টাইপের উপর নির্ভর করে হয় সংখ্যার অ্যারে বা স্ট্রিংয়ের অ্যারে ফেরত দিতে হবে।
আমাদের ফাংশনের বিভিন্ন সিগনেচার ঘোষণা করতে ওভারলোডিং ব্যবহার করি:
function splitVal(val: number): number[];
function splitVal(val: string): string[] {
// উভয় সিগনেচারের বাস্তবায়ন
}
এখন ফাংশনের বাস্তবায়ন লিখি। এর কোডে আমাদের শর্ত দিয়ে নির্ধারণ করতে হবে যে, ফাংশনের কোন সিগনেচারটি কাজ করেছে, এবং তার উপর নির্ভর করে প্রয়োজনীয় কোড চালাতে হবে যার ফলাফল প্রয়োজনীয় টাইপের হবে:
function splitVal(val: number): number[];
function splitVal(val: string): string[] {
if (typeof val === 'string') {
return val.split('');
} else {
let str: string = String(val);
let arr: string[] = str.split('');
return arr.map((elem: string): number => +elem);
}
}
অন্যান্য ভাষার থেকে ভিন্ন, টাইপস্ক্রিপ্টে ওভারলোডিংয়ে একটি ফাংশন তৈরি হয়। একই নাম দিয়ে কিন্তু ভিন্ন সিগনেচার সহ একাধিক ফাংশন তৈরি করা যায় না।
এমন একটি ফাংশন লিখুন যা DOM এলিমেন্টের টেক্সট ফেরত দেবে বা পরিবর্তন করবে। এটি নিম্নলিখিতভাবে কাজ করতে হবে:
text('#elem', 'text'); // টেক্সট সেট করবে
text('#elem'); // বর্তমান টেক্সট ফেরত দেবে