TypeScript মডিউল এবং নামস্পেস

টাইপস্ক্রিপ্ট (Typescript) - Web Development

307

TypeScript-এ মডিউল (Modules) এবং নামস্পেস (Namespaces) দুইটি গুরুত্বপূর্ণ কনসেপ্ট। এই দুটি কনসেপ্ট কোডের সংগঠন এবং পুনঃব্যবহারের ক্ষেত্রে সাহায্য করে। মডিউল এবং নামস্পেস ব্যবহারের মাধ্যমে আপনি আপনার কোডকে আরও পরিষ্কার, অর্গানাইজড এবং বজায় রাখার জন্য সহজ করতে পারেন।


মডিউল (Modules)

TypeScript-এ মডিউল ব্যবহার করে আপনি কোডের বিভিন্ন অংশকে আলাদা আলাদা ফাইল বা ইউনিটে বিভক্ত করতে পারেন। এর ফলে আপনি কোড পুনঃব্যবহারযোগ্য, রিডেবল এবং মেইন্টেনেবল রাখতে পারবেন। মডিউলস ES6 এর মডিউল সিস্টেমের উপর ভিত্তি করে কাজ করে এবং এটি export এবং import কিওয়ার্ড ব্যবহার করে বিভিন্ন ফাংশন, ভেরিয়েবল এবং ক্লাস শেয়ার করতে সহায়তা করে।

মডিউল তৈরি করা

  1. একটি ফাংশন মডিউল তৈরি করা:

    একটি TypeScript ফাইল তৈরি করুন, যেমন math.ts এবং সেখানে একটি ফাংশন ডিফাইন করুন।

    // math.ts
    export function add(a: number, b: number): number {
      return a + b;
    }
    
    export function subtract(a: number, b: number): number {
      return a - b;
    }
    

    এখানে export কিওয়ার্ড ব্যবহার করে add এবং subtract ফাংশনগুলোকে এক্সপোর্ট করা হয়েছে।

  2. মডিউল ইম্পোর্ট করা:

    এখন একটি নতুন TypeScript ফাইল তৈরি করুন, যেমন app.ts, এবং সেখানে math.ts মডিউলটি ইম্পোর্ট করুন।

    // app.ts
    import { add, subtract } from './math';
    
    let sum = add(5, 3);
    let difference = subtract(5, 3);
    
    console.log("Sum:", sum);         // Output: Sum: 8
    console.log("Difference:", difference); // Output: Difference: 2
    

    এখানে import কিওয়ার্ড ব্যবহার করে math.ts ফাইল থেকে add এবং subtract ফাংশনগুলি ইম্পোর্ট করা হয়েছে।

ডিফল্ট এক্সপোর্ট (Default Export)

TypeScript মডিউলে আপনি একটি ডিফল্ট এক্সপোর্টও ব্যবহার করতে পারেন, যেখানে একটি একক ভ্যালু বা অবজেক্টকে ডিফল্ট হিসেবে এক্সপোর্ট করা হয়।

// math.ts
export default function multiply(a: number, b: number): number {
  return a * b;
}

এখন multiply ফাংশনটি একটি ডিফল্ট এক্সপোর্ট হিসেবে এক্সপোর্ট হয়েছে।

// app.ts
import multiply from './math';

let product = multiply(5, 3);
console.log("Product:", product);  // Output: Product: 15

এখানে multiply ফাংশনটি ডিফল্ট এক্সপোর্ট হিসেবে ইম্পোর্ট করা হয়েছে।


নামস্পেস (Namespaces)

নামস্পেস TypeScript-এ একটি উপায় যার মাধ্যমে আপনি একসাথে সম্পর্কিত কোড (যেমন ফাংশন, ক্লাস, এবং ইন্টারফেস) একত্রে গ্রুপ করতে পারেন। নামস্পেস সাধারণত বড় অ্যাপ্লিকেশনের মধ্যে কোডের সংঘর্ষ এড়াতে এবং কোডের সংরক্ষণ এবং ব্যবহার সহজ করতে ব্যবহৃত হয়। এটি মূলত এক্সপোর্ট এবং ইম্পোর্টের থেকে পুরানো একটি ধারণা, তবে TypeScript এখনও এটি সমর্থন করে।

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

একটি নামস্পেস তৈরি করতে namespace কিওয়ার্ড ব্যবহার করতে হয়। উদাহরণস্বরূপ, math নামক একটি নামস্পেস তৈরি করতে পারেন:

namespace MathOperations {
  export function add(a: number, b: number): number {
    return a + b;
  }

  export function subtract(a: number, b: number): number {
    return a - b;
  }
}

এখানে MathOperations নামস্পেসে add এবং subtract ফাংশন দুটি এক্সপোর্ট করা হয়েছে।

নামস্পেস ব্যবহার করা

নামস্পেসের ফাংশন বা ক্লাস ব্যবহারের জন্য আপনাকে নামস্পেসের নাম এবং ফাংশনের নাম স্পেস দিয়ে কল করতে হবে।

let sum = MathOperations.add(5, 3);
let difference = MathOperations.subtract(5, 3);

console.log("Sum:", sum);            // Output: Sum: 8
console.log("Difference:", difference);  // Output: Difference: 2

এখানে MathOperations.add এবং MathOperations.subtract ফাংশনগুলি ব্যবহার করা হয়েছে।


মডিউল বনাম নামস্পেস

TypeScript-এ মডিউল এবং নামস্পেস উভয়ই কোডকে গঠন ও সংগঠিত করতে ব্যবহৃত হয়, তবে তাদের ব্যবহারের কনটেক্সট ভিন্ন। নিচে মডিউল এবং নামস্পেসের মধ্যে কিছু মৌলিক পার্থক্য দেওয়া হলো:

  • মডিউল:
    • মডিউলগুলি সাধারণত আলাদা ফাইলে থাকে এবং ফাইল ভিত্তিক এক্সপোর্ট এবং ইম্পোর্ট ব্যবহৃত হয়।
    • মডিউল ব্যবহারে কোডকে ভাগ করে রাখতে সাহায্য করে এবং অন্য ফাইলে সহজেই এক্সপোর্ট এবং ইম্পোর্ট করা যায়।
    • ES6 এর মডিউল সিস্টেমের সাথে সামঞ্জস্যপূর্ণ।
  • নামস্পেস:
    • নামস্পেসগুলি একক ফাইলে বা স্কোপে কোডকে সংগঠিত করতে ব্যবহৃত হয়।
    • নামস্পেস সাধারণত কোডের সংঘর্ষ এড়াতে ব্যবহৃত হয় যখন অনেক ফাংশন বা ক্লাস একটি নির্দিষ্ট কাজের সাথে সম্পর্কিত থাকে।
    • নামস্পেসগুলি ক্লাস, ইন্টারফেস, ফাংশন ইত্যাদি একত্রে গ্রুপ করতে সাহায্য করে।

সারাংশ

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

Content added By

মডিউল সিস্টেম হল এমন একটি কাঠামো যা কোডের বিভিন্ন অংশকে আলাদা আলাদা ইউনিটে ভাগ করে দেয়, যাতে একটি বৃহৎ প্রজেক্টের কোডের গঠন সহজ এবং পরিষ্কার থাকে। মডিউল সিস্টেম ব্যবহার করে আপনি কোডকে বিভিন্ন অংশে ভাগ করতে পারেন এবং প্রতিটি অংশের জন্য নির্দিষ্ট দায়িত্ব বা ফাংশন প্রদান করতে পারেন। এর ফলে কোডের পুনঃব্যবহারযোগ্যতা, রক্ষণাবেক্ষণযোগ্যতা, এবং স্কেলেবিলিটি বৃদ্ধি পায়।


মডিউল সিস্টেমের মূল বৈশিষ্ট্য

  1. এন্টারপ্রাইজ অ্যাপ্লিকেশন ডিজাইন: বড় এবং জটিল অ্যাপ্লিকেশনগুলির মধ্যে মডিউল সিস্টেম ব্যবহার করে কোডকে ছোট এবং manageable অংশে ভাগ করা যায়, যা কোড লেখার এবং রক্ষণাবেক্ষণের জন্য সুবিধাজনক।
  2. কোড ভাগাভাগি (Code Sharing): মডিউল সিস্টেম আপনাকে কোড ভাগ করার সুবিধা দেয়, যেমন আপনি এক মডিউল থেকে অন্য মডিউলে ফাংশন বা ক্লাস ইমপোর্ট করতে পারেন। এটি কোডের পুনঃব্যবহারযোগ্যতা বাড়ায়।
  3. নির্দিষ্ট দায়িত্ব নির্ধারণ: প্রতিটি মডিউল একটি নির্দিষ্ট কাজ বা দায়িত্বের জন্য তৈরি হয়। এটি কোডের স্পষ্টতা বৃদ্ধি করে এবং উন্নত কোড-অর্গানাইজেশন নিশ্চিত করে।
  4. নামস্থান (Namespace): মডিউল সিস্টেম কোডের মধ্যে নামের সংঘর্ষ এড়াতে সাহায্য করে। একটি মডিউল শুধুমাত্র তার নিজস্ব কোডের মধ্যে উপস্থিত নামগুলোর অ্যাক্সেস রাখে।

মডিউল সিস্টেমের ধরন

মডিউল সিস্টেমের বিভিন্ন ধরন রয়েছে, যেগুলি বিভিন্ন প্ল্যাটফর্ম এবং পরিবেশের জন্য প্রযোজ্য। TypeScript এবং JavaScript এ প্রধানত দুটি মডিউল সিস্টেম ব্যবহৃত হয়: CommonJS এবং ES6 (ESM) মডিউল সিস্টেম

১. CommonJS মডিউল সিস্টেম

CommonJS মডিউল সিস্টেম Node.js এ ব্যবহৃত হয়। এতে require এবং module.exports ব্যবহার করা হয়। এই সিস্টেমের মাধ্যমে আপনি এক মডিউল থেকে অন্য মডিউলে ফাংশন বা অবজেক্ট আমদানি এবং রপ্তানি করতে পারেন।

উদাহরণ:

math.js (মডিউল এক্সপোর্ট)

// রপ্তানি
module.exports.add = function(a, b) {
  return a + b;
};

module.exports.subtract = function(a, b) {
  return a - b;
};

app.js (মডিউল ইনপোর্ট)

// আমদানি
const math = require('./math');

console.log(math.add(5, 3)); // 8
console.log(math.subtract(5, 3)); // 2

২. ES6 মডিউল সিস্টেম (ESM)

ES6 মডিউল সিস্টেম একটি নতুন মডিউল সিস্টেম যা JavaScript এর নতুন সংস্করণ (ECMAScript 2015 বা ES6) এর সাথে যোগ হয়েছে। এতে import এবং export ব্যবহৃত হয়।

উদাহরণ:

math.ts (মডিউল এক্সপোর্ট)

export function add(a: number, b: number): number {
  return a + b;
}

export function subtract(a: number, b: number): number {
  return a - b;
}

app.ts (মডিউল ইনপোর্ট)

import { add, subtract } from './math';

console.log(add(5, 3)); // 8
console.log(subtract(5, 3)); // 2

এখানে, export ব্যবহার করে math.ts থেকে ফাংশনগুলো এক্সপোর্ট করা হয়েছে এবং import ব্যবহার করে app.ts এ সেগুলো আমদানি করা হয়েছে।


মডিউল সিস্টেমের সুবিধা

  1. কোডের পুনঃব্যবহারযোগ্যতা: মডিউল সিস্টেমের মাধ্যমে কোডকে পুনঃব্যবহারযোগ্য ইউনিটে ভাগ করা যায়, যা ভবিষ্যতে একই কোড অন্যান্য প্রজেক্টে ব্যবহার করতে সহজ করে তোলে।
  2. স্কেলেবিলিটি: বড় এবং জটিল অ্যাপ্লিকেশনগুলির মধ্যে মডিউল ব্যবস্থাপনা ব্যবহারের মাধ্যমে কোডের স্কেলেবিলিটি বাড়ানো যায়। একটি অ্যাপ্লিকেশন যত বড় হবে, তত বেশি মডিউল ব্যবহার করা যায়।
  3. কোডের বিচ্ছিন্নতা (Encapsulation): মডিউলগুলির মধ্যে কোড বিচ্ছিন্ন থাকে, তাই এক মডিউলের পরিবর্তন অন্য মডিউলের কার্যকারিতায় প্রভাব ফেলে না, যদি না তারা পারস্পরিকভাবে সংযুক্ত থাকে।
  4. নামস্থান (Namespace): মডিউল সিস্টেম ব্যবহারের মাধ্যমে কোডের মধ্যে নামের সংঘর্ষ এড়ানো যায়। এক মডিউলের ফাংশন বা ভেরিয়েবল অন্য মডিউল থেকে নির্দিষ্টভাবে অ্যাক্সেস করা যায়।

TypeScript এ মডিউল ব্যবহারের উদাহরণ

TypeScript এ মডিউল সিস্টেম ব্যবহারের মাধ্যমে কোডকে আরও সুশৃঙ্খল এবং সিস্টেমেটিকভাবে সংগঠিত করা যায়। TypeScript মডিউল সিস্টেম ES6 এর সাথে পুরোপুরি সামঞ্জস্যপূর্ণ।

উদাহরণ:

math.ts (মডিউল এক্সপোর্ট)

export function add(a: number, b: number): number {
  return a + b;
}

export function multiply(a: number, b: number): number {
  return a * b;
}

app.ts (মডিউল ইনপোর্ট)

import { add, multiply } from './math';

let sum = add(5, 3);
let product = multiply(5, 3);

console.log(`Sum: ${sum}, Product: ${product}`);

এখানে, add এবং multiply ফাংশন দুটি math.ts থেকে এক্সপোর্ট করা হয়েছে এবং app.ts এ ইনপোর্ট করা হয়েছে।


মডিউল সিস্টেম কোডের গঠন এবং ব্যবস্থাপনায় অত্যন্ত গুরুত্বপূর্ণ ভূমিকা পালন করে। TypeScript এবং JavaScript এ মডিউল সিস্টেম ব্যবহারের মাধ্যমে কোডকে বেশি কার্যকর এবং দক্ষভাবে তৈরি করা যায়। এটি কোডের পুনঃব্যবহারযোগ্যতা, স্কেলেবিলিটি এবং রক্ষণাবেক্ষণযোগ্যতা বাড়ায়, এবং টাইপ সেফটি নিশ্চিত করে।

Content added By

TypeScript একটি শক্তিশালী মডিউল সিস্টেম প্রদান করে যা কোডকে ছোট এবং সংগঠিত অংশে বিভক্ত করতে সহায়তা করে। TypeScript মডিউল সিস্টেম JavaScript এর মডিউল সিস্টেমের উপর ভিত্তি করে কাজ করে, যা ES6 মডিউল সিস্টেমকেও সমর্থন করে। TypeScript এর মডিউল সিস্টেমের মাধ্যমে আপনি কোডকে আলাদা আলাদা ফাইল বা মডিউলে ভাগ করতে পারেন, এবং প্রতিটি মডিউল অন্য মডিউল থেকে নির্দিষ্ট অংশগুলি ইম্পোর্ট এবং এক্সপোর্ট করতে পারে।


১. মডিউল কী?

মডিউল এমন একটি কোড ইউনিট যা নির্দিষ্ট কিছু কার্যাবলী বা ফিচার একত্রিত করে এবং তা অন্য অংশ থেকে আলাদা থাকে। একটি মডিউল সাধারণত একটি ফাইলের মধ্যে থাকে, এবং এই মডিউল অন্য ফাইল বা মডিউল থেকে ব্যবহারযোগ্য হতে পারে।

২. TypeScript মডিউল সিস্টেম

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


৩. export কিওয়ার্ড

export কিওয়ার্ড ব্যবহার করে আপনি একটি মডিউল থেকে কোন ফাংশন, ক্লাস, ভেরিয়েবল বা টাইপ এক্সপোর্ট করতে পারেন, যাতে অন্য মডিউলগুলো তা ব্যবহার করতে পারে।

উদাহরণ:

// math.ts (মডিউল ১)
export function add(a: number, b: number): number {
  return a + b;
}

export function multiply(a: number, b: number): number {
  return a * b;
}

এখানে math.ts ফাইল দুটি ফাংশন add এবং multiply এক্সপোর্ট করছে।


৪. import কিওয়ার্ড

import কিওয়ার্ড ব্যবহার করে আপনি অন্য মডিউল থেকে এক্সপোর্ট করা ফাংশন, ক্লাস, বা ভেরিয়েবল ইম্পোর্ট করতে পারেন।

উদাহরণ:

// app.ts (মডিউল ২)
import { add, multiply } from './math';

console.log(add(5, 10));       // Output: 15
console.log(multiply(5, 10));  // Output: 50

এখানে app.ts ফাইলটি math.ts থেকে add এবং multiply ফাংশন দুটি ইম্পোর্ট করছে এবং তাদের ব্যবহার করছে।


৫. ডিফল্ট এক্সপোর্ট (Default Export)

TypeScript মডিউল সিস্টেমে আপনি একটি মডিউল থেকে শুধুমাত্র একটিই ডিফল্ট এক্সপোর্ট করতে পারেন। ডিফল্ট এক্সপোর্ট ব্যবহারের মাধ্যমে আপনি কোন একটি ফাংশন বা ক্লাসকে ডিফল্ট হিসেবে এক্সপোর্ট করতে পারেন এবং ইম্পোর্ট করার সময় নাম উল্লেখ করতে হবে না।

উদাহরণ:

// math.ts (মডিউল ১)
export default function add(a: number, b: number): number {
  return a + b;
}

এখানে add ফাংশনটি ডিফল্ট এক্সপোর্ট করা হয়েছে। এখন আপনি এটি অন্য মডিউল থেকে ইম্পোর্ট করতে পারবেন।

// app.ts (মডিউল ২)
import add from './math';

console.log(add(5, 10));  // Output: 15

এখানে add ফাংশনটি ডিফল্ট হিসেবে ইম্পোর্ট করা হয়েছে, তাই add নামটি ব্যবহার করতে হয়েছে, এবং এটি অতিরিক্ত {} ছাড়া সরাসরি ব্যবহার করা হয়েছে।


৬. মডিউল রেজোলিউশন

TypeScript মডিউল সিস্টেমে মডিউল রেজোলিউশন হল সেই প্রক্রিয়া যার মাধ্যমে TypeScript ডিটারমাইন করে কোন মডিউলটি ইম্পোর্ট করতে হবে। TypeScript দুটি ধরনের মডিউল রেজোলিউশন পদ্ধতি সমর্থন করে:

  • Node: যেখানে node_modules ফোল্ডারে মডিউল খোঁজা হয়।
  • Classic: যেখানে ঐতিহ্যবাহী পদ্ধতিতে মডিউল খোঁজা হয় (অতএব, এটি ES6 মডিউল সিস্টেমের সাথে পুরোপুরি সামঞ্জস্যপূর্ণ নয়)।

নির্দিষ্ট মডিউল রেজোলিউশন পদ্ধতি নির্ধারণ করতে আপনি tsconfig.jsonmoduleResolution অপশন ব্যবহার করতে পারেন।

উদাহরণ:

{
  "compilerOptions": {
    "moduleResolution": "node"
  }
}

এখানে moduleResolution প্যারামিটারটি "node" সেট করা হয়েছে, যার মাধ্যমে TypeScript node_modules ফোল্ডারে মডিউল খুঁজবে।


৭. মডিউল ডিরেক্টরি স্ট্রাকচার

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

/project-root
  /src
    /models
      user.ts
    /controllers
      userController.ts
    app.ts
  tsconfig.json
  package.json

এখানে, src ফোল্ডারের ভিতরে models এবং controllers নামে দুটি সাবফোল্ডার রয়েছে, যেখানে আপনার বিভিন্ন মডিউলগুলোর কোড থাকবে। এই কোডগুলি পরস্পরের সাথে import এবং export করে কাজ করবে।


৮. সংক্ষেপে

TypeScript মডিউল সিস্টেম আপনাকে কোডকে আরও সংগঠিত এবং পুনঃব্যবহারযোগ্য করতে সাহায্য করে। আপনি export এবং import কিওয়ার্ড ব্যবহার করে কোডের বিভিন্ন অংশ আলাদা করে লিখতে পারেন এবং একে অপর থেকে ব্যবহার করতে পারেন। TypeScript ES6 মডিউল সিস্টেমকে পুরোপুরি সমর্থন করে এবং কোডের মান ও maintainability বৃদ্ধি করতে গুরুত্বপূর্ণ ভূমিকা পালন করে।

Content added By

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

TypeScript এ মডিউলিং একটি অত্যন্ত গুরুত্বপূর্ণ বৈশিষ্ট্য, যা কোডের গঠন এবং পুনঃব্যবহারযোগ্যতা সহজ করে। মডিউল ব্যবহারের মাধ্যমে আপনি কোডের বিভিন্ন অংশকে আলাদা আলাদা ফাইলে ভাগ করতে পারেন এবং যেকোনো প্রজেক্টে সহজেই পুনঃব্যবহার করতে পারেন। TypeScript এ export এবং import কীওয়ার্ড ব্যবহার করে মডিউল এক্সপোর্ট এবং ইম্পোর্ট করা হয়।


১. মডিউল এক্সপোর্ট (Export)

TypeScript এ মডিউল এক্সপোর্ট করার জন্য export কীওয়ার্ড ব্যবহার করা হয়। এর মাধ্যমে আপনি একটি ফাংশন, ক্লাস, কনস্ট্যান্ট বা ভেরিয়েবলকে অন্য ফাইলের জন্য দৃশ্যমান (accessible) করে দেন।

১.১. Named Export

Named Export এর মাধ্যমে আপনি একাধিক ভেরিয়েবল, ফাংশন বা ক্লাস এক্সপোর্ট করতে পারেন। প্রতিটি এক্সপোর্টের জন্য আলাদা export কীওয়ার্ড ব্যবহার করতে হয়।

উদাহরণ:
// mathFunctions.ts

export const pi: number = 3.14;

export function add(x: number, y: number): number {
  return x + y;
}

export class Calculator {
  static multiply(x: number, y: number): number {
    return x * y;
  }
}

এখানে, আমরা তিনটি আলাদা উপাদান—pi কনস্ট্যান্ট, add() ফাংশন, এবং Calculator ক্লাস—এক্সপোর্ট করেছি।

১.২. Default Export

Default Export এর মাধ্যমে আপনি একমাত্র একটি উপাদান (ফাংশন, ক্লাস, বা অবজেক্ট) এক্সপোর্ট করতে পারেন। এটি কম্পাইলারকে নির্দেশ দেয় যে এই ফাইলটির প্রধান এক্সপোর্টটি কী।

উদাহরণ:
// greet.ts

export default function greet(name: string): string {
  return `Hello, ${name}!`;
}

এখানে greet() ফাংশনকে default export করা হয়েছে, অর্থাৎ এটি ওই ফাইলের প্রধান এক্সপোর্ট।


২. মডিউল ইম্পোর্ট (Import)

import কীওয়ার্ড ব্যবহার করে আপনি এক্সপোর্ট করা উপাদানগুলো অন্য ফাইল থেকে ইম্পোর্ট করতে পারেন।

২.১. Named Import

Named Import এর মাধ্যমে আপনি এক্সপোর্ট করা নির্দিষ্ট উপাদান (ফাংশন, ভেরিয়েবল, ক্লাস) ব্যবহার করতে পারেন।

উদাহরণ:
// app.ts

import { pi, add, Calculator } from './mathFunctions';

console.log(pi); // 3.14
console.log(add(5, 7)); // 12
console.log(Calculator.multiply(5, 3)); // 15

এখানে pi, add(), এবং Calculator ক্লাসকে mathFunctions.ts থেকে ইম্পোর্ট করা হয়েছে।

২.২. Default Import

Default Export করা উপাদান ইম্পোর্ট করার জন্য import স্টেটমেন্টে নাম উল্লেখ না করেও সরাসরি উপাদানটি ইম্পোর্ট করা যায়।

উদাহরণ:
// app.ts

import greet from './greet';

console.log(greet("Alice")); // Hello, Alice!

এখানে greet() ফাংশনটি greet.ts থেকে default export করা হয়েছে এবং সরাসরি greet নাম দিয়ে ইম্পোর্ট করা হয়েছে।

২.৩. সবকিছু ইম্পোর্ট করা

যদি আপনি একটি মডিউলের সবকিছু একবারে ইম্পোর্ট করতে চান, তাহলে আপনি * as সিনট্যাক্স ব্যবহার করতে পারেন। এতে পুরো মডিউল একটি অবজেক্ট হিসেবে ইম্পোর্ট হবে।

উদাহরণ:
// app.ts

import * as math from './mathFunctions';

console.log(math.pi); // 3.14
console.log(math.add(5, 10)); // 15
console.log(math.Calculator.multiply(5, 2)); // 10

এখানে mathFunctions.ts থেকে সমস্ত এক্সপোর্টকৃত উপাদান math নামে একটি অবজেক্ট হিসেবে ইম্পোর্ট করা হয়েছে এবং ব্যবহার করা হয়েছে।


৩. মডিউল এক্সপোর্ট এবং ইম্পোর্টের ফিচার

  • Named Exports: একাধিক উপাদান এক্সপোর্ট করতে পারেন। ইম্পোর্ট করার সময় নির্দিষ্ট উপাদানগুলিকে নির্বাচিত করা হয়।
  • Default Export: একমাত্র একটি উপাদান এক্সপোর্ট করা হয়, যা সরাসরি ইম্পোর্ট করা যায়।
  • Partial Imports: আপনি শুধুমাত্র প্রয়োজনীয় অংশগুলোই ইম্পোর্ট করতে পারেন।
  • Wildcard Import: * as সিনট্যাক্স ব্যবহার করে পুরো মডিউলটি একটি অবজেক্ট হিসেবে ইম্পোর্ট করতে পারেন।

৪. মডিউল রেজল্যুশন

TypeScript মডিউল রেজল্যুশন (Module Resolution) অর্থাৎ ফাইল কোথায় খুঁজে পাওয়া যাবে, তা নির্ধারণ করে। TypeScript সাধারণত node_modules বা আপনি যে পথ নির্দিষ্ট করেছেন, সেখান থেকে মডিউল খুঁজে বের করে।

আপনি যদি কোন মডিউল ইম্পোর্ট করতে চান, তবে তার জন্য পথ উল্লেখ করতে হবে (যেমন ./ বা ../ বা নির্দিষ্ট প্যাকেজ নাম)।


সারাংশ

TypeScript এ মডিউল ব্যবহারের মাধ্যমে কোডের সংগঠন এবং পুনঃব্যবহারযোগ্যতা সহজ করা যায়। export এবং import কীওয়ার্ড ব্যবহার করে আপনি কোডের বিভিন্ন অংশ আলাদা ফাইলে ভাগ করে রাখতে পারেন এবং প্রয়োজনে এক ফাইল থেকে অন্য ফাইলে ডাটা এক্সপোর্ট/ইম্পোর্ট করতে পারেন। TypeScript মডিউল ব্যবস্থাপনা JavaScript এর মডিউল সিস্টেমের সঙ্গে পুরোপুরি সামঞ্জস্যপূর্ণ, এবং এটি কোড রক্ষণাবেক্ষণ এবং স্কেলেবিলিটি বাড়াতে সহায়তা করে।

Content added By
Promotion

Are you sure to start over?

Loading...