TypeScriptBeginner
TypeScript Functions (ফাংশন)
Parameter ও return type, optional/default/rest parameter, function type, callback, arrow function, overload এবং never — সম্পূর্ণ বাংলা।
22টি অংশবাংলা ভাষায়
ফাংশনই প্রোগ্রামের মূল একক। TypeScript-এ ফাংশনের parameter ও return type দুটিই strict করা যায় — ফলে ভুল arguments দিয়ে call করা অসম্ভব হয়ে যায়।
Parameter ও Return Types
function add(a: number, b: number): number {
return a + b;
}
// add("10", 5); // ❌ string দেওয়া যাবে না
// add(1, 2, 3); // ❌ অতিরিক্ত argument
console.log(add(2, 3)); // 5
function greet(name: string): string {
return "হ্যালো, " + name;
}Optional ও Default Parameters
// Optional — '?' থাকলে দেওয়াও যায়, না-দেওয়াও যায়
function introduce(name: string, title?: string): string {
return title ? title + " " + name : name;
}
// Default — না দিলে ডিফল্ট মান বসে
function multiply(a: number, b: number = 2): number {
return a * b;
}
console.log(multiply(5)); // 10
console.log(multiply(5, 4)); // 20Rest Parameters
function sum(...numbers: number[]): number {
return numbers.reduce((total, n) => total + n, 0);
}
console.log(sum(1, 2, 3)); // 6
console.log(sum(1, 2, 3, 4, 5)); // 15Function Type
ফাংশনকেই টাইপ হিসেবে ধরা যায় — এতে callback পাস করা এবং reusable function signature বানানো সহজ হয়।
type Calculator = (a: number, b: number) => number;
const addFn: Calculator = (a, b) => a + b;
const mulFn: Calculator = (a, b) => a * b;
function operate(op: Calculator, x: number, y: number) {
return op(x, y);
}
console.log(operate(addFn, 2, 3)); // 5Callback Function
function fetchUserName(callback: (name: string) => void) {
// সিমুলেশন: পরে ডেটা আসবে
const name = "রহিম";
callback(name);
}
fetchUserName((name) => {
console.log("ব্যবহারকারী:", name);
});Arrow Function ও Inline Type
// Inline type
const double = (n: number): number => n * 2;
// Object টাইপ ফেরত দেয়
const makeUser: (name: string, age: number) => { name: string; age: number } =
(name, age) => ({ name, age });Function Overloading
একই ফাংশন ভিন্ন arguments আকারে call করা যায় — overload signature দিয়ে সম্ভাব্য সব রূপ টাইপ করে দেওয়া হয়। এক ধাপ নিচে implementation লেখা হয়।
function format(value: string): string;
function format(value: number): string;
function format(value: string | number): string {
return typeof value === "number"
? value.toFixed(2)
: value.toUpperCase();
}
console.log(format(3.14159)); // "3.14"
console.log(format("hello")); // "HELLO"this Parameter
interface Counter {
count: number;
add(this: Counter, amount: number): void;
}
const counter: Counter = {
count: 0,
add(this: Counter, amount: number) {
this.count += amount;
},
};
counter.add(5);
console.log(counter.count); // 5never Return
function throwError(message: string): never {
throw new Error(message);
}
function assertNever(value: never): never {
throw new Error("অপ্রত্যাশিত মান: " + value);
}সহজ নিয়ম
প্রতিটি প্যারামিটারে টাইপ দিন, return type লিখুন (ফাংশন public API হলে), আর void/never মনে রাখুন — return না করা বনাম শেষ না হওয়া।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।