Skip to content

Developer-Nur/Level-2-Assignment-1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 

Repository files navigation

১. Interface এবং Type-এর মধ্যে পার্থক্য কী?

TypeScript-এ ডেটা স্ট্রাকচার ডিফাইন করার জন্য interface এবং type উভয়ই ব্যবহৃত হয়, তবে এদের মধ্যে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে।

🤝 Interface

  • এক্সটেনশন: extends এবং implements কীওয়ার্ড সাপোর্ট করে।
  • ডিক্লারেশন মার্জিং (Declaration Merging): একই নামের একাধিক interface ডিক্লেয়ার করলে তারা অটোম্যাটিকভাবে merge হয়ে যায়।
  • ব্যবহার: মূলত Object-এর structure ডিফাইন করতে ব্যবহৃত হয়।

🛑 Type

  • এক্সটেনশন: extends সাপোর্ট করে না, কিন্তু & (Intersection Type) ব্যবহার করে একটি টাইপের সাথে অন্য একটি টাইপকে যুক্ত করা যায়।
  • ডিক্লারেশন মার্জিং: কাজ করে না। একই নামের একাধিক type ডিক্লেয়ার করলে Error দেবে।
  • ব্যবহার: Union Type, Tuple, Primitive Type সহ সব রকম Type বানাতে ব্যবহৃত হয়।

💡 উদাহরন: ডিক্লারেশন মার্জিং

// Interface - Declaration Merging ✅
interface User {
  name: string;
}

interface User {
  age: number;
}
// এখন 'User' interface-এ 'name' এবং 'age' উভয়ই আছে।

// Type - No Merging ❌
type Person = {
  name: string;
};

// Error: Duplicate identifier 'Person'
// type Person = {
//   age: number;
// };

২. keyof Keyword-এর ব্যবহার কী?

keyof হলো TypeScript-এর একটি অপারেটর যা একটি Object Type-এর সব Keys-এর Union Type রিটার্ন করে। এটি Type Safety নিশ্চিত করতে এবং স্ট্রিং লিটারেল ভুল এড়াতে ব্যবহৃত হয়।

🔑 ব্যবহার keyof ব্যবহার করে এমন একটি ফাংশন তৈরি করা যায়, যা নিশ্চিত করে যে আপনি কেবল Object-এর মধ্যে থাকা Keys দিয়েই ডেটা অ্যাক্সেস করছেন।

💡 উদাহরণ TypeScript

type User = {
  id: number;
  name: string;
  email: string;
};


// UserKeys হলো "id" | "name" | "email"
type UserKeys = keyof User;

// ফাংশনটি নিশ্চিত করে যে 'key' প্যারামিটারটি কেবল 'User' Type-এর Keys-এর মধ্যে থাকবে।
function getValue<T>(obj: T, key: keyof T): T[keyof T] {
  return obj[key];
}

const user: User = {
  id: 1,
  name: "John",
  email: "john@example.com"
};

console.log(getValue(user, "name")); // ✅ Valid (Compile Time-এ পাস)

// console.log(getValue(user, "age"));
// Error: Argument of type '"age"' is not assignable to parameter of type 'keyof User'.
// (Compile Time-এ ধরা পড়ে)

ব্যবহারের সুবিধা Compile Time Error: ভুল Key ব্যবহার করলে Compile Time-এই Error ধরা পড়ে।

Runtime Safety: এর ফলে Runtime Error হওয়ার সম্ভাবনা কমে যায়।

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors