নামস্পেস এবং তাদের ব্যবহার

TypeScript মডিউল এবং নামস্পেস - টাইপস্ক্রিপ্ট (Typescript) - Web Development

324

TypeScript এ নামস্পেস (Namespace) একটি প্রোগ্রামিং কনসেপ্ট যা কোডকে গ্রুপ করার এবং বিভিন্ন কার্যকারিতার মধ্যে সংঘর্ষ এড়ানোর জন্য ব্যবহৃত হয়। এটি কোডের সঙ্গতি বজায় রাখতে সাহায্য করে, বিশেষত যখন বড় প্রজেক্ট তৈরি করা হয়। নামস্পেসের মাধ্যমে আপনি একাধিক ফাংশন, কনস্ট্যান্ট, ক্লাস ইত্যাদিকে একটি নির্দিষ্ট নামের অধীনে গ্রুপ করতে পারেন, যাতে একই নামের বিভিন্ন আইটেমের মধ্যে কোনো কনফ্লিক্ট না হয়।


১. নামস্পেস তৈরি করা

TypeScript এ একটি নামস্পেস তৈরি করতে namespace কিওয়ার্ড ব্যবহার করা হয়। নিচে একটি সহজ উদাহরণ দেওয়া হলো:

namespace MyNamespace {
  export class Person {
    name: string;
    constructor(name: string) {
      this.name = name;
    }
    greet() {
      console.log(`Hello, ${this.name}`);
    }
  }

  export function sayGoodbye() {
    console.log("Goodbye!");
  }
}

এখানে:

  • namespace MyNamespace দিয়ে একটি নামস্পেস তৈরি করা হয়েছে।
  • Person ক্লাস এবং sayGoodbye ফাংশন export করা হয়েছে, যাতে অন্য জায়গা থেকে এগুলো ব্যবহার করা যায়।

২. নামস্পেসের মধ্যে ক্লাস এবং ফাংশন ব্যবহার করা

যেহেতু আমরা Person ক্লাস এবং sayGoodbye ফাংশন export করেছি, এগুলোকে আমরা অন্য কোনো ফাইল বা স্কোপে ব্যবহার করতে পারব। নিচে এর ব্যবহার দেখানো হলো:

// অন্য ফাইলে (বা স্কোপে) নামস্পেসের সদস্য ব্যবহার করা
let person = new MyNamespace.Person("John");
person.greet(); // Output: Hello, John

MyNamespace.sayGoodbye(); // Output: Goodbye!

এখানে, MyNamespace নামস্পেসের মধ্যে থাকা Person ক্লাস এবং sayGoodbye ফাংশনকে ব্যবহার করা হয়েছে।


৩. নামস্পেসের মধ্যে কনস্ট্যান্ট এবং ভ্যারিয়েবল ব্যবহার

TypeScript নামস্পেসের মধ্যে কনস্ট্যান্ট এবং ভ্যারিয়েবলও রাখতে পারে। উদাহরণস্বরূপ:

namespace MathUtils {
  export const PI = 3.14;

  export function calculateArea(radius: number): number {
    return PI * radius * radius;
  }
}

console.log(MathUtils.PI); // Output: 3.14
console.log(MathUtils.calculateArea(5)); // Output: 78.5

এখানে:

  • PI কনস্ট্যান্ট এবং calculateArea ফাংশন MathUtils নামস্পেসের অংশ।
  • এগুলোকে MathUtils নামস্পেসের মাধ্যমে এক্সেস করা হয়েছে।

৪. নামস্পেসের মধ্যে ইন্টারফেস ব্যবহার করা

TypeScript এ নামস্পেসের মধ্যে ইন্টারফেসও রাখা যায়, যা কোডের টাইপ চেকিং উন্নত করতে সহায়তা করে। নিচে একটি উদাহরণ দেওয়া হলো:

namespace Geometry {
  export interface Shape {
    area(): number;
  }

  export class Circle implements Shape {
    radius: number;
    constructor(radius: number) {
      this.radius = radius;
    }
    area() {
      return Math.PI * this.radius * this.radius;
    }
  }

  export class Rectangle implements Shape {
    width: number;
    height: number;
    constructor(width: number, height: number) {
      this.width = width;
      this.height = height;
    }
    area() {
      return this.width * this.height;
    }
  }
}

let circle = new Geometry.Circle(5);
console.log(circle.area()); // Output: 78.53981633974483

let rectangle = new Geometry.Rectangle(4, 6);
console.log(rectangle.area()); // Output: 24

এখানে:

  • Shape ইন্টারফেস একটি সাধারণ area মেথড ডিফাইন করেছে, যা বিভিন্ন জ্যামিতিক আকারে (যেমন Circle এবং Rectangle) প্রয়োগ করা হয়েছে।
  • Circle এবং Rectangle ক্লাসগুলো Shape ইন্টারফেস ইমপ্লিমেন্ট করেছে।

৫. নামস্পেসের মধ্যে অন্তর্নিহিত নামস্থান ব্যবহার (Nested Namespaces)

TypeScript এ আপনি একাধিক নামস্পেসকে ভিতরে ভিতরে রাখতে পারেন, যা নামস্পেসকে আরও সংগঠিত এবং শ্রেণিবদ্ধ করতে সাহায্য করে।

namespace OuterNamespace {
  export namespace InnerNamespace {
    export function hello() {
      console.log("Hello from InnerNamespace!");
    }
  }
}

OuterNamespace.InnerNamespace.hello(); // Output: Hello from InnerNamespace!

এখানে:

  • OuterNamespace একটি বাইরের নামস্পেস এবং তার মধ্যে InnerNamespace নামে একটি অভ্যন্তরীণ নামস্পেস রয়েছে।
  • InnerNamespace এর ফাংশন hello() কল করা হয়েছে বাইরের নামস্পেসের মাধ্যমে।

৬. নামস্পেস এবং মডিউল (Modules) এর মধ্যে পার্থক্য

TypeScript এ নামস্পেস এবং মডিউল দুটি আলাদা ধারণা। নামস্পেস একসাথে কোড গ্রুপ করতে ব্যবহার করা হয়, যখন মডিউল কোডের আলাদা আলাদা ইউনিট তৈরির জন্য ব্যবহৃত হয়। মডিউলগুলি সাধারণত ফাইল ভিত্তিক হয় এবং এদের মধ্যে রপ্তানি (export) এবং আমদানি (import) করা হয়।

  • নামস্পেস: একত্রিত করে কোড, সাধারণত একটি স্কোপের মধ্যে।
  • মডিউল: আলাদা আলাদা ফাইল বা ইউনিটে কোড ভাগ করে।

নামস্পেস এবং মডিউল একসাথে ব্যবহার করা যায়, তবে বর্তমানে মডিউল ব্যবহারের পরামর্শ দেওয়া হয় কারণ এটি কোড ব্যবস্থাপনা এবং নির্ধারিত ইন্টারফেস সঠিকভাবে মেনে চলে।


সারাংশ

TypeScript এ নামস্পেস কোডকে আরও সংগঠিত এবং কনফ্লিক্ট-মুক্ত রাখতে সাহায্য করে। এটি বিভিন্ন ফাংশন, ক্লাস, কনস্ট্যান্ট এবং ভ্যারিয়েবলকে একটি নির্দিষ্ট নামের অধীনে গ্রুপ করতে ব্যবহৃত হয়। আপনি নামস্পেস ব্যবহার করে কোডের এক্সেসিবিলিটি নিয়ন্ত্রণ করতে পারেন এবং প্রোগ্রামের বিভিন্ন অংশের মধ্যে সংঘর্ষ এড়াতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...