Static & Non-static
🧭 static
কীওয়ার্ড কি?
static
হল TypeScript/JavaScript-এর একটি ক্লাস-লেভেল প্রপার্টি বা মেথড ডিফাইন করার জন্য ব্যবহৃত কীওয়ার্ড। এটি ক্লাসের ইন্সট্যান্স (object) থেকে নয়, ক্লাস নিজেই এটি ব্যবহার করতে পারে।
🧪 উদাহরণ:
class Counter {
static count: number = 0;
static increment() {
return (Counter.count = Counter.count + 1);
}
static decrement() {
return (Counter.count = Counter.count - 1);
}
}
console.log(Counter.increment()); // 1
console.log(Counter.increment()); // 2
console.log(Counter.increment()); // 3
🔍 বিশ্লেষণ:
static count
→ এই প্রপার্টিCounter
ক্লাসের সঙ্গে সম্পর্কিত, কোন ইন্সট্যান্সের সঙ্গে নয়।Counter.increment()
→ ক্লাসের নাম দিয়েইincrement()
মেথড কল করা হচ্ছে, কোনো object বানানোর দরকার হচ্ছে না।
📌 কেন দরকার?
কারণ | ব্যাখ্যা |
---|---|
✅ ক্লাস-লেভেল ডেটা বা ফাংশন রাখতে | যেসব প্রপার্টি বা মেথড সব object এর জন্য একই হবে (shared) |
✅ মেমোরি অপচয় কমাতে | প্রতিটি object-এ আলাদা করে মেমোরি না নিয়ে, একটি common জায়গায় রাখা হয় |
✅ Utility মেথড তৈরির জন্য | যেমন Math.random() , Date.now() ইত্যাদি |
✅ Singleton বা Counter হিসাব রাখার জন্য | যেমন কতবার ক্লাস ইউজ হচ্ছে, সেটি ট্র্যাক করতে |
🧠 কখন ব্যবহার করবো?
-
যখন আপনি এমন কোনো ডেটা বা মেথড ডিফাইন করতে চান যা specific object নয়, বরং পুরো ক্লাসের জন্য প্রযোজ্য।
-
যেমন:
- একটি Counter class → যেখানে সকল instance-এর জন্য count থাকবে একটাই।
- Static utility class → যেমন Math বা Logger।
- Singleton pattern → একটি মাত্র instance মেইনটেইন করতে চাইলে।
❌ Non-static হলে কী হতো?
class Counter {
count: number = 0;
increment() {
this.count = this.count + 1;
return this.count;
}
}
const counter1 = new Counter();
console.log(counter1.increment()); // 1
const counter2 = new Counter();
console.log(counter2.increment()); // আবার 1 → কারণ এটা নতুন object
👉 উপরের উদাহরণে, প্রতিটি Counter
object নিজের আলাদা count
রাখছে, কোনো শেয়ারিং হচ্ছে না।
🧾 উপসংহার:
বৈশিষ্ট্য | static | non-static |
---|---|---|
প্রপার্টি কোথায় থাকে | ক্লাস-এ | প্রতিটি object-এ |
একাধিক instance ব্যবহারে প্রভাব | একই value শেয়ার করে | আলাদা আলাদা value থাকে |
অ্যাক্সেস করার পদ্ধতি | ClassName.propertyOrMethod() | instance.propertyOrMethod() |
✅ সংক্ষেপে মনে রাখার নিয়ম:
static ব্যবহার করি যখন প্রপার্টি বা ফাংশনটা object নয়, ক্লাস এর জন্য দরকার হয়।
Last updated on