TypeScript টাইপ সিস্টেম এবং টাইপ অ্যালিয়াস

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

344

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


১. TypeScript টাইপ সিস্টেম

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

সাধারণ টাইপসমূহ

TypeScript এ বিভিন্ন ধরনের টাইপ রয়েছে, যা ব্যবহার করে আপনি ভেরিয়েবল এবং ফাংশনের টাইপ নির্ধারণ করতে পারেন। কিছু সাধারণ টাইপ:

  • string: স্ট্রিং টাইপ
  • number: নাম্বার টাইপ
  • boolean: বুলিয়ান টাইপ (true অথবা false)
  • array: অ্যারে টাইপ
  • tuple: একটি নির্দিষ্ট সংখ্যক উপাদান ধারণকারী অ্যারে
  • any: যেকোনো টাইপ
  • void: কিছু ফেরত না দেয়ার জন্য (ফাংশন)
  • null এবং undefined: null অথবা undefined মান
  • object: কোনো অবজেক্ট টাইপ

উদাহরণ:

let name: string = "John";
let age: number = 25;
let isActive: boolean = true;

২. টাইপ অ্যালিয়াস (Type Aliases)

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

টাইপ অ্যালিয়াস তৈরি করা

TypeScript এ টাইপ অ্যালিয়াস তৈরি করতে type কীওয়ার্ড ব্যবহার করা হয়।

উদাহরণ:

type Person = {
  name: string;
  age: number;
  isActive: boolean;
};

এখন Person টাইপটি একটি অবজেক্টের টাইপ হিসেবে ব্যবহার করা যাবে। উদাহরণ:

let user1: Person = {
  name: "Alice",
  age: 30,
  isActive: true
};

এখানে Person টাইপটি ব্যবহার করা হয়েছে যাতে এটি একটি নির্দিষ্ট কাঠামো (এটি স্ট্রিং, নাম্বার, বুলিয়ান টাইপের মান ধারণ করবে) নির্দেশ করে।

ইউনিয়ন টাইপ (Union Types)

টাইপ অ্যালিয়াস ব্যবহার করে আপনি একাধিক টাইপের মধ্যে নির্বাচিত করতে পারবেন। একে Union Types বলা হয়। এটি বিশেষভাবে সাহায্যকারী যখন কোনো ভেরিয়েবল একাধিক টাইপ গ্রহণ করতে পারে।

উদাহরণ:

type ID = string | number;

let userId1: ID = "abc123"; // valid
let userId2: ID = 12345;    // valid

এখানে ID টাইপটি স্ট্রিং বা নাম্বার হতে পারে, এবং আপনি যেকোনো একটিকে ব্যবহার করতে পারবেন।


৩. ইন্টারফেস এবং টাইপ অ্যালিয়াসের মধ্যে পার্থক্য

TypeScript এ টাইপ অ্যালিয়াস এবং ইন্টারফেস দুইটি ব্যবহারযোগ্য টুল যা অবজেক্ট টাইপ সংজ্ঞায়িত করার জন্য ব্যবহৃত হয়। তবে কিছু পার্থক্য আছে:

  • টাইপ অ্যালিয়াস বিভিন্ন ধরনের (যেমন, string | number, tuple, function signature, ইত্যাদি) টাইপ সংজ্ঞায়িত করতে পারে।
  • ইন্টারফেস শুধুমাত্র অবজেক্ট টাইপের জন্য ব্যবহৃত হয় এবং এটি হেরিটেজের জন্য উপযুক্ত।

টাইপ অ্যালিয়াস উদাহরণ:

type Point = {
  x: number;
  y: number;
};

ইন্টারফেস উদাহরণ:

interface Point {
  x: number;
  y: number;
}

প্রধান পার্থক্য হলো ইন্টারফেসকে একাধিক বার এক্সটেন্ড (extend) করা সম্ভব, কিন্তু টাইপ অ্যালিয়াসকে এক্সটেন্ড করা সম্ভব নয়। তবে, যদি আপনার শুধুমাত্র একটি অবজেক্ট টাইপ দরকার হয়, তবে ইন্টারফেস ব্যবহারের পরিবর্তে টাইপ অ্যালিয়াস ব্যবহার করা যেতে পারে।


৪. টাইপ অ্যালিয়াসের উন্নত ব্যবহার

টাইপ অ্যালিয়াসের সাহায্যে আপনি আরও উন্নত ধরনের কমপ্লেক্স টাইপ তৈরি করতে পারেন, যেমন:

ফাংশন সিগনেচার:

type GreetFunction = (name: string) => string;

const greet: GreetFunction = (name) => {
  return `Hello, ${name}!`;
};

টিউপল (Tuple):

type User = [string, number];

const user1: User = ["Alice", 25];

অবজেক্টের জন্য Nested টাইপ:

type Address = {
  street: string;
  city: string;
  postalCode: number;
};

type Person = {
  name: string;
  age: number;
  address: Address; // Nested type
};

const person1: Person = {
  name: "John",
  age: 30,
  address: {
    street: "123 Main St",
    city: "New York",
    postalCode: 10001
  }
};

এখানে, Person টাইপের মধ্যে Address টাইপটি অন্তর্ভুক্ত করা হয়েছে।


উপসংহার

TypeScript এর টাইপ সিস্টেম এবং টাইপ অ্যালিয়াস ব্যবহার করে আপনি কোডকে আরও দৃঢ়, সুরক্ষিত এবং রক্ষণাবেক্ষণযোগ্য করতে পারেন। টাইপ অ্যালিয়াসের মাধ্যমে আপনি সহজেই কমপ্লেক্স টাইপ তৈরি করতে পারবেন এবং কোডের পুনরায় ব্যবহারযোগ্যতা বৃদ্ধি করতে পারবেন। TypeScript এর টাইপ সিস্টেম কোডের মানের উন্নতি করতে সাহায্য করে, এবং ডেভেলপমেন্ট প্রক্রিয়ায় বিভিন্ন ধরনের ভুল কমাতে সহায়ক হয়।

Content added By

TypeScript প্রিমিটিভ টাইপগুলি JavaScript এর মতোই, তবে TypeScript এ আপনাকে এই টাইপগুলি স্পষ্টভাবে ডিফাইন করতে হয়, যা কোডে টাইপ সেফটি এবং বাগ দূর করতে সাহায্য করে। TypeScript এ প্রিমিটিভ টাইপগুলো হল: number, string, এবং boolean। এই তিনটি টাইপের মাধ্যমে আপনি মৌলিক ডেটা সংরক্ষণ ও পরিচালনা করতে পারবেন।


১. number টাইপ

TypeScript এ number টাইপটি সমস্ত ধরণের সংখ্যার জন্য ব্যবহৃত হয়, যেমন পূর্ণসংখ্যা, ভগ্নাংশ, পজিটিভ বা নেগেটিভ সংখ্যা, ইত্যাদি। TypeScript এ number টাইপটি JavaScript এর মতোই ব্যবহার করা হয়, কিন্তু TypeScript এর সুবিধা হলো, আপনি টাইপ নিরাপত্তা নিশ্চিত করতে পারেন।

উদাহরণ:

let age: number = 25;
let price: number = 19.99;
let temperature: number = -5;

এখানে:

  • age একটি পূর্ণসংখ্যা (integer),
  • price একটি দশমিক সংখ্যা (floating point number),
  • temperature একটি নেগেটিভ সংখ্যা (negative number)।

TypeScript এ number টাইপ শুধুমাত্র সংখ্যা গ্রহণ করবে এবং অন্য কোনো ডেটা টাইপ (যেমন, স্ট্রিং বা বুলিয়ান) গ্রহণ করবে না।


২. string টাইপ

string টাইপটি টেক্সট ডেটা বা অক্ষরের সমষ্টি (characters) সংরক্ষণ করার জন্য ব্যবহৃত হয়। TypeScript এ একটি ভ্যারিয়েবলকে string টাইপ হিসেবে ডিফাইন করা হলে, সেটি কেবল টেক্সট (string) মান গ্রহণ করবে।

উদাহরণ:

let name: string = "Alice";
let greeting: string = "Hello, World!";
let address: string = "123 Main St.";

এখানে:

  • name একটি স্ট্রিং (text) ডেটা সংরক্ষণ করছে,
  • greeting এবং address এছাড়া আরও স্ট্রিং ডেটা সংরক্ষণ করছে।

string টাইপ ব্যবহার করার মাধ্যমে আপনি কোনো টেক্সট বা অক্ষরের মান নির্দিষ্ট করতে পারবেন। এছাড়া TypeScript এ string ডেটা ব্যবহার করতে আপনি template literals (`) ব্যবহার করতে পারেন, যা ইন্টারপোলেশন এবং মাল্টি-লাইনের স্ট্রিং সহজভাবে তৈরি করতে সাহায্য করে।

উদাহরণ (Template Literals):

let firstName: string = "John";
let lastName: string = "Doe";
let fullName: string = `${firstName} ${lastName}`;

এখানে fullName এর মান হবে John Doe


৩. boolean টাইপ

boolean টাইপটি দুটি মান গ্রহণ করতে পারে: true অথবা false। এটি সাধারণত শর্ত (conditions) যাচাই করতে, ফ্ল্যাগ সেট করতে বা যেকোনো ধরনের লজিক্যাল পরীক্ষা পরিচালনা করতে ব্যবহৃত হয়।

উদাহরণ:

let isActive: boolean = true;
let hasPermission: boolean = false;
let isComplete: boolean = true;

এখানে:

  • isActive, hasPermission, এবং isComplete সবই বুলিয়ান টাইপ, যেগুলোর মান true বা false হতে পারে।

৪. TypeScript প্রিমিটিভ টাইপসের সুবিধা

  • টাইপ সেফটি: TypeScript আপনাকে টাইপ সেফটি প্রদান করে, অর্থাৎ আপনি যদি ভুল টাইপের মান অ্যাসাইন করার চেষ্টা করেন (যেমন, একটি স্ট্রিংয়ে সংখ্যার মান দেয়ার চেষ্টা), TypeScript আপনাকে ত্রুটি দেখাবে।
  • কোডের স্পষ্টতা: প্রিমিটিভ টাইপগুলি ব্যবহার করলে কোড পরিষ্কার এবং স্পষ্ট হয়। এটি ডেভেলপারদের জন্য কোড বুঝতে সহজ করে তোলে।
  • ডেভেলপমেন্টে সাহায্য: TypeScript কম্পাইলার টাইপ চেকিংয়ের মাধ্যমে কোডে সমস্যা চিহ্নিত করে দেয়, যা ডেভেলপমেন্টের সময় বাগ কমাতে সাহায্য করে।

উপসংহার

TypeScript এ number, string, এবং boolean টাইপগুলি ব্যবহারের মাধ্যমে আপনি মৌলিক ডেটা ধরণগুলির উপর কাজ করতে পারবেন। এগুলি TypeScript এর শক্তিশালী টাইপ সিস্টেমের অংশ, যা আপনার কোডকে আরও টাইপ নিরাপদ এবং নির্ভরযোগ্য করে তোলে। TypeScript এর সুবিধা হলো, এটি আপনাকে টাইপ সংক্রান্ত ত্রুটিগুলি আগে থেকেই ধরা ও ঠিক করার সুযোগ দেয়।

Content added By

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


১. ইউনিয়ন টাইপ (Union Type)

ইউনিয়ন টাইপ TypeScript-এ একটি টাইপ সিস্টেম ফিচার যা একাধিক টাইপকে একত্রিত করে। এটি বলে দেয় যে, একটি ভেরিয়েবল একাধিক টাইপের যেকোনো একটি ধারণ করতে পারে। একে | (পাইপ) চিহ্ন দিয়ে প্রকাশ করা হয়।

উদাহরণ:

let value: string | number;

value = "Hello, TypeScript!";  // Valid
value = 42;                    // Valid
value = true;                  // Error: boolean is not assignable to 'string | number'

উপরের উদাহরণে, value ভেরিয়েবলটি string অথবা number টাইপ হতে পারে। এটি ইউনিয়ন টাইপ হিসেবে পরিচিত।

ব্যবহার:

  • যখন আপনি চান যে কোনো ভেরিয়েবল একাধিক সম্ভাব্য টাইপ ধারণ করতে পারে, তখন ইউনিয়ন টাইপ ব্যবহার করবেন।
  • এই টাইপটি আপনাকে একাধিক টাইপের মধ্য থেকে নির্বাচনের সুযোগ দেয়, কিন্তু একে একসাথে ব্যবহার করতে পারবেন না।

২. ইন্টারসেকশন টাইপ (Intersection Type)

ইন্টারসেকশন টাইপ TypeScript-এ এমন একটি ফিচার যা দুটি বা তার বেশি টাইপকে একত্রিত করে একটি নতুন টাইপ তৈরি করে, যেখানে নতুন টাইপটি সমস্ত টাইপের সমস্ত প্রপার্টি ধারণ করবে। একে & (এম্পারস্যান্ড) চিহ্ন দিয়ে প্রকাশ করা হয়।

উদাহরণ:

type Person = {
  name: string;
  age: number;
};

type Employee = {
  employeeId: string;
  department: string;
};

type EmployeeDetails = Person & Employee;

const employee: EmployeeDetails = {
  name: "John",
  age: 30,
  employeeId: "E1234",
  department: "HR"
};

এখানে EmployeeDetails একটি ইন্টারসেকশন টাইপ, যা Person এবং Employee টাইপের সব প্রপার্টি ধারণ করে। অর্থাৎ, EmployeeDetails টাইপের একটি অবজেক্টে name, age, employeeId, এবং department চারটি প্রপার্টি থাকবে।

ব্যবহার:

  • যখন আপনি চান যে একটি অবজেক্ট বা ভেরিয়েবল একাধিক টাইপের সমস্ত প্রপার্টি ধারণ করুক, তখন ইন্টারসেকশন টাইপ ব্যবহার করবেন।
  • এটি একাধিক টাইপের সম্পূর্ণ সংমিশ্রণ প্রদান করে।

৩. ইউনিয়ন এবং ইন্টারসেকশন টাইপের তুলনা

| বৈশিষ্ট্য | ইউনিয়ন টাইপ (|) | ইন্টারসেকশন টাইপ (&) | |-----------------------|----------------------------------|------------------------------------| | প্রকৃতি | একাধিক টাইপের যেকোনো একটি টাইপ গ্রহণ করে | একাধিক টাইপের সমস্ত প্রপার্টি ধারণ করে | | উদ্দেশ্য | একাধিক টাইপের মধ্যে যেকোনো একটি টাইপ নির্বাচন করা | একাধিক টাইপের সব প্রপার্টি একত্রিত করা | | উদাহরণ | string | number | Person & Employee | | ভ্যালিডেশন | একটি টাইপ হতে পারে | সমস্ত টাইপের প্রপার্টি থাকতে হবে | | ব্যবহার | যখন ভেরিয়েবল একাধিক টাইপ ধারণ করতে পারে | যখন একটি অবজেক্ট বা টাইপ একাধিক টাইপের সব প্রপার্টি ধারণ করতে পারে |


৪. ইউনিয়ন এবং ইন্টারসেকশন টাইপের বাস্তব ব্যবহার

ইউনিয়ন টাইপের উদাহরণ:

ধরা যাক, আপনি একটি ফাংশন তৈরি করতে চান যা সংখ্যায় পরিসীমা যাচাই করবে এবং স্ট্রিং বা সংখ্যা গ্রহণ করবে:

function printLength(value: string | number): void {
  if (typeof value === "string") {
    console.log(`String length: ${value.length}`);
  } else {
    console.log(`Number value: ${value}`);
  }
}

printLength("Hello, TypeScript!");  // String length: 19
printLength(42);                    // Number value: 42

এই ক্ষেত্রে, value ভেরিয়েবলটি string অথবা number হতে পারে, তাই আমরা যদি value স্ট্রিং হয়, তবে .length ব্যবহার করব, এবং যদি এটি সংখ্যা হয়, তবে সেই সংখ্যা মুদ্রণ করব।


ইন্টারসেকশন টাইপের উদাহরণ:

ধরা যাক, আপনি একটি ফাংশন তৈরি করতে চান যা Person এবং Employee টাইপের সব প্রপার্টি একত্রিত করে এবং সেগুলো একটি অবজেক্ট হিসেবে প্রক্রিয়া করবে:

type Person = {
  name: string;
  age: number;
};

type Employee = {
  employeeId: string;
  department: string;
};

type EmployeeDetails = Person & Employee;

function printEmployeeDetails(employee: EmployeeDetails): void {
  console.log(`Name: ${employee.name}`);
  console.log(`Age: ${employee.age}`);
  console.log(`Employee ID: ${employee.employeeId}`);
  console.log(`Department: ${employee.department}`);
}

const employee1: EmployeeDetails = {
  name: "John",
  age: 30,
  employeeId: "E1234",
  department: "HR"
};

printEmployeeDetails(employee1);

এখানে EmployeeDetails টাইপটি Person এবং Employee টাইপের সব প্রপার্টি ধারণ করে, এবং printEmployeeDetails ফাংশনটি সমস্ত প্রপার্টি মুদ্রণ করবে।


উপসংহার

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

Content added By

TypeScript-এ টাইপ সিস্টেম একটি শক্তিশালী ফিচার। টাইপ অ্যালিয়াস (type alias) এবং কাস্টম টাইপস (custom types) ব্যবহার করে আপনি আপনার কোডে আরও সঠিকতা, স্পষ্টতা এবং রিচ টাইপিং যোগ করতে পারেন। টাইপ অ্যালিয়াস এবং কাস্টম টাইপস আপনার প্রজেক্টের কোডকে আরও পঠনযোগ্য এবং বজায় রাখার জন্য সহজ করে তোলে। নিচে টাইপ অ্যালিয়াস এবং কাস্টম টাইপস ব্যবহার করার বিস্তারিত ব্যাখ্যা দেওয়া হলো।


টাইপ অ্যালিয়াস (Type Alias)

টাইপ অ্যালিয়াস ব্যবহার করে আপনি একটি টাইপকে একটি নতুন নাম দিতে পারেন। এটি বিশেষত তখন দরকার হয় যখন একটি টাইপ বারবার ব্যবহার করতে হয় এবং আপনি কোডে তা পুনরায় ব্যবহারের জন্য একটি সংক্ষিপ্ত এবং বোধগম্য নাম চান।

টাইপ অ্যালিয়াস তৈরি করা

টাইপ অ্যালিয়াস তৈরি করতে type কীওয়ার্ড ব্যবহার করা হয়।

type StringOrNumber = string | number;

এখন StringOrNumber একটি টাইপ হিসেবে কাজ করবে যা string অথবা number হতে পারে।

টাইপ অ্যালিয়াসের ব্যবহার

let value: StringOrNumber;
value = 10;        // Valid
value = "Hello";   // Valid
value = true;      // Error: Type 'boolean' is not assignable to type 'StringOrNumber'

এভাবে আপনি টাইপ অ্যালিয়াস ব্যবহার করে অনেক কমপ্লেক্স টাইপকে একটি সংক্ষিপ্ত নাম দিয়ে কোডের মধ্যে ব্যবহার করতে পারেন।


কাস্টম টাইপস (Custom Types)

TypeScript-এ আপনি কাস্টম টাইপস তৈরি করতে পারেন বিভিন্ন ডাটা স্ট্রাকচার (যেমন, অবজেক্ট, অ্যারে, ফাংশন) এর জন্য। এগুলো আপনাকে আরও স্পেসিফিক এবং কাস্টমাইজড টাইপিং সুবিধা দেয়।

অবজেক্ট টাইপের কাস্টম টাইপ

যখন আপনি একটি নির্দিষ্ট অবজেক্ট স্ট্রাকচার তৈরি করতে চান, তখন কাস্টম টাইপ ব্যবহার করতে পারেন।

type Person = {
  name: string;
  age: number;
  isEmployed: boolean;
};

এখন আপনি Person টাইপ ব্যবহার করে অবজেক্ট তৈরি করতে পারবেন।

let person: Person = {
  name: "John",
  age: 30,
  isEmployed: true
};

ফাংশন টাইপের কাস্টম টাইপ

TypeScript-এ আপনি ফাংশন টাইপও কাস্টমাইজ করতে পারেন।

type Add = (a: number, b: number) => number;

এখন আপনি এই ফাংশন টাইপ ব্যবহার করতে পারবেন।

const add: Add = (a, b) => a + b;
console.log(add(5, 3));  // Output: 8

অ্যারে টাইপের কাস্টম টাইপ

অ্যারে টাইপের জন্যও কাস্টম টাইপ তৈরি করা যায়।

type StringArray = string[];

এখন আপনি StringArray টাইপ ব্যবহার করতে পারেন শুধুমাত্র স্ট্রিং মানের অ্যারে হিসেবে।

let colors: StringArray = ["red", "green", "blue"];

টুপল (Tuple) টাইপ

TypeScript-এ টুপল টাইপ ব্যবহার করে আপনি নির্দিষ্ট সংখ্যক উপাদান ধারণকারী অ্যারে তৈরি করতে পারেন, যেখানে প্রতিটি উপাদান একটি নির্দিষ্ট টাইপের হতে হবে।

type Point = [number, number];

এখন Point টাইপ একটি টুপল হবে, যার প্রথম এবং দ্বিতীয় উপাদান হবে number টাইপ।

let point: Point = [10, 20];

ইউনিয়ন টাইপ (Union Type)

ইউনিয়ন টাইপ ব্যবহার করে একাধিক টাইপকে একত্রিত করা যায়, অর্থাৎ একটি ভেরিয়েবল একাধিক টাইপ ধারণ করতে পারে। এটি একটি শক্তিশালী কাস্টম টাইপ তৈরির পদ্ধতি।

type StringOrNumber = string | number;

এখন এই টাইপটি এমন ভেরিয়েবল ধারণ করবে যেটি হয় স্ট্রিং বা নংম্বর।

let value: StringOrNumber = "Hello";
value = 100;

ইন্টারফেস (Interface) বনাম টাইপ অ্যালিয়াস (Type Alias)

Interface এবং Type Alias উভয়ই কাস্টম টাইপ তৈরি করতে ব্যবহৃত হয়। তবে, তাদের মধ্যে কিছু পার্থক্য রয়েছে:

  • ইন্টারফেস সাধারণত অবজেক্ট টাইপের জন্য ব্যবহার করা হয় এবং এটি এক্সটেনশন ও ডেক্লারেশন মার্জ করতে সক্ষম।
  • টাইপ অ্যালিয়াস আরো জেনেরাল, এবং একাধিক টাইপ যেমন ইউনিয়ন, টুপল ইত্যাদি নিয়ে কাজ করতে পারে।

উদাহরণ: ইন্টারফেস vs টাইপ অ্যালিয়াস

// ইন্টারফেস
interface PersonInterface {
  name: string;
  age: number;
}

// টাইপ অ্যালিয়াস
type PersonType = {
  name: string;
  age: number;
};

ইন্টারফেস এক্সটেনশন:

interface Employee extends PersonInterface {
  salary: number;
}

উপসংহার

TypeScript-এ টাইপ অ্যালিয়াস এবং কাস্টম টাইপস ব্যবহার করা আপনার কোডকে আরও স্পষ্ট এবং টাইপ সুরক্ষিত (type-safe) করে তোলে। আপনি টাইপ অ্যালিয়াস দিয়ে একাধিক টাইপকে একত্রিত করতে পারেন এবং কাস্টম টাইপস তৈরি করে বিভিন্ন ডাটা স্ট্রাকচার এবং ফাংশন টাইপকে কাস্টমাইজ করতে পারেন। টাইপিংয়ের সঠিক ব্যবহারে কোডের ভুল কম হয় এবং আরও রিডেবল কোড লেখা সম্ভব হয়।

Content added By

TypeScript এ ইন্টারফেস (Interface) এবং টাইপ (Type) ব্যবহার করা হয় টাইপ সেফটি বজায় রাখতে এবং কোডের readability ও maintainability উন্নত করতে। যদিও ইন্টারফেস এবং টাইপ দুটোই খুবই কাছাকাছি, কিন্তু কিছু পার্থক্য রয়েছে। এখানে আমরা ইন্টারফেস এবং টাইপ এর ব্যবহারের বিস্তারিত আলোচনা করব।


১. ইন্টারফেস (Interface) কী?

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

ইন্টারফেসের স্নিপেট:

interface Person {
  name: string;
  age: number;
  greet(): void;
}

const user: Person = {
  name: "John",
  age: 30,
  greet() {
    console.log(`Hello, ${this.name}`);
  }
};

user.greet();  // Output: Hello, John

এখানে Person নামক একটি ইন্টারফেস তৈরি করা হয়েছে, যা একটি অবজেক্টের কাঠামো নির্ধারণ করে, এবং এটি name, age প্রপার্টি এবং greet মেথড সহ অবজেক্টকে বাধ্যতামূলক করে।


২. টাইপ (Type) কী?

টাইপ (Type) হলো TypeScript এর আরও একটি ফিচার যা টাইপের উপর বেশি নিয়ন্ত্রণ দেয়। টাইপের মাধ্যমে আপনি ভ্যালিড মানের কাঠামো নির্ধারণ করতে পারেন, যেমন একটি টাইপ হতে পারে একটি মৌলিক টাইপ (string, number, boolean), অথবা আপনি একটি ইউনিয়ন টাইপ, টাপল টাইপ, বা কোনও অবজেক্ট টাইপও তৈরি করতে পারেন।

টাইপের স্নিপেট:

type Person = {
  name: string;
  age: number;
  greet(): void;
};

const user: Person = {
  name: "Alice",
  age: 25,
  greet() {
    console.log(`Hello, ${this.name}`);
  }
};

user.greet();  // Output: Hello, Alice

এখানে Person টাইপ তৈরি করা হয়েছে, যা একটি অবজেক্টের কাঠামো নির্ধারণ করেছে ঠিক ইন্টারফেসের মতো। এটি name, age এবং greet প্রপার্টির সঙ্গে একটি অবজেক্টের কাঠামো তৈরি করে।


৩. ইন্টারফেস এবং টাইপের মধ্যে পার্থক্য

যদিও ইন্টারফেস এবং টাইপ অনেক ক্ষেত্রেই একে অপরের মতো কাজ করে, তবে কিছু মৌলিক পার্থক্য রয়েছে:

পার্থক্যগুলো:

  1. এক্সটেনশন এবং এক্সপেনশন:

    • ইন্টারফেস: একাধিক ইন্টারফেসকে একত্রিত করা যায় extends কিওয়ার্ড দিয়ে।
    • টাইপ: একাধিক টাইপকে একত্রিত করার জন্য & অপারেটর ব্যবহার করা হয়।

    ইন্টারফেস এক্সটেনশন:

    interface Animal {
      name: string;
    }
    
    interface Dog extends Animal {
      breed: string;
    }
    
    const myDog: Dog = {
      name: "Rex",
      breed: "German Shepherd"
    };
    

    টাইপ এক্সটেনশন:

    type Animal = {
      name: string;
    }
    
    type Dog = Animal & {
      breed: string;
    };
    
    const myDog: Dog = {
      name: "Rex",
      breed: "German Shepherd"
    };
    
  2. এক্সপ্রেশন:

    • ইন্টারফেস: সাধারণত অবজেক্ট টাইপের জন্য ব্যবহৃত হয়।
    • টাইপ: টাইপ এক্সপ্রেশনগুলো আরও ফ্লেক্সিবল, যেমন ইউনিয়ন টাইপ, টাপল টাইপ ইত্যাদি।

    টাইপের উদাহরণ:

    type StringOrNumber = string | number;
    
    const value: StringOrNumber = 42;
    
  3. ডিক্লারেশন মার্জিং (Declaration Merging):

    • ইন্টারফেস: একই নামের একাধিক ইন্টারফেসকে মার্জ করা যায়।
    • টাইপ: টাইপে ডিক্লারেশন মার্জিং সম্ভব নয়, অর্থাৎ একে একাধিকবার ডিফাইন করা সম্ভব নয়।

    ইন্টারফেস মার্জিং উদাহরণ:

    interface Person {
      name: string;
    }
    
    interface Person {
      age: number;
    }
    
    const user: Person = {
      name: "Bob",
      age: 30
    };
    

    এখানে দুটি Person ইন্টারফেস মার্জ হয়ে একটি পূর্ণাঙ্গ Person টাইপ তৈরি হয়েছে।


৪. কখন ইন্টারফেস ব্যবহার করবেন?

  • যখন আপনি অবজেক্ট টাইপের কাঠামো (structure) পরিষ্কারভাবে নির্ধারণ করতে চান এবং কোডে ডেভেলপারদের জন্য একটি পরিষ্কার কন্ট্রাক্ট তৈরি করতে চান।
  • যখন আপনি ইন্টারফেস মার্জিং ব্যবহার করতে চান (যেহেতু এটি একাধিক ডিক্লারেশন মার্জ করতে সাহায্য করে)।

৫. কখন টাইপ ব্যবহার করবেন?

  • যখন আপনাকে ইউনিয়ন টাইপ, টাপল টাইপ বা ফাংশন সিগনেচার যেমন আরো জটিল টাইপিং করতে হবে।
  • যখন আপনি একটি একক টাইপ ডিফাইন করতে চান যা পুনঃব্যবহারযোগ্য।
  • যখন আপনি একটি সাধারণ বা এডভান্সড কাস্টম টাইপ তৈরির প্রয়োজন হয়, যেমন Conditional Types

উপসংহার

ইন্টারফেস (Interface) এবং টাইপ (Type) TypeScript এর টাইপ সিস্টেমের দুটি শক্তিশালী ফিচার। ইন্টারফেস সাধারণত অবজেক্ট কাঠামো সংজ্ঞায়িত করার জন্য ব্যবহৃত হয় এবং টাইপ একটু বেশি ফ্লেক্সিবল এবং কাস্টমাইজেবল হতে পারে, যার মাধ্যমে আপনি বিভিন্ন ধরনের কাস্টম টাইপ তৈরি করতে পারেন। সঠিক ব্যবহার সুনির্দিষ্ট প্রজেক্টের প্রয়োজন এবং ব্যবহারিক ক্ষেত্রে নির্ভর করবে।

Content added By
Promotion

Are you sure to start over?

Loading...