Skip to Content

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 রাখছে, কোনো শেয়ারিং হচ্ছে না।


🧾 উপসংহার:

বৈশিষ্ট্যstaticnon-static
প্রপার্টি কোথায় থাকেক্লাস-এপ্রতিটি object-এ
একাধিক instance ব্যবহারে প্রভাবএকই value শেয়ার করেআলাদা আলাদা value থাকে
অ্যাক্সেস করার পদ্ধতিClassName.propertyOrMethod()instance.propertyOrMethod()

✅ সংক্ষেপে মনে রাখার নিয়ম:

static ব্যবহার করি যখন প্রপার্টি বা ফাংশনটা object নয়, ক্লাস এর জন্য দরকার হয়।

Last updated on