درک ژنریک ها در TypeScript: راهنمای نهایی کد قابل استفاده مجدد

gens ژنریک در TypeScript چیست؟
هنگام توسعه برنامه ها ، ما اغلب در حین حفظ نیاز به انعطاف پذیری داریم ایمنی تایپبشر نسخه ژن این چالش را با اجازه دادن به ما حل کنید اجزای قابل استفاده مجدد این می تواند با انواع مختلف داده کار کند.
در این راهنما ، ما گام به گام را تجزیه کنید، اطمینان از شما کاملاً درک کنید نحوه استفاده کارآمد از آنها.
🎯 چرا باید ژنرال ها را یاد بگیرید؟
بدون ژنریک ، برای انواع مختلف داده به توابع جداگانه نیاز دارید. به عنوان مثال:
function returnString(value: string): string {
return value;
}
function returnNumber(value: number): number {
return value;
}
این رویکرد منجر می شود کد اضافیبشر Generics این مشکل را توسط ایجاد یک عملکرد واحد که برای همه نوع کار می کند.
🏆 درک ژنرال ها با یک مثال ساده
ژنرال ها استفاده می کنند نوع نگهدارنده محل، مانند
، اجازه دادن به یک عملکرد برای رسیدگی به انواع داده های مختلف به صورت پویا.
function returnValue<T>(value: T): T {
return value;
}
اکنون ، این عملکرد برای هر نوع کار می کند:
console.log(returnValue<string>("Hello Generics!")); // "Hello Generics!"
console.log(returnValue<number>(123)); // 123
console.log(returnValue<boolean>(true)); // true
console.log(returnValue<object>({ name: "TypeScript" })); // { name: "TypeScript" }
این است قدرت ژنرال ها – یک عملکرد که ضمن حفظ آن با انواع مختلف سازگار است ایمنی تایپبشر
🏗 استفاده از ژنرال ها در کلاس ها
اگر با آن کار می کنید ذخیره داده ها، می توانید از ژنرال ها در یک کلاس استفاده کنید تا آن را بسازید انعطاف پذیر و در عین حال امن:
class Storage<T> {
private item: T;
setItem(value: T) {
this.item = value;
}
getItem(): T {
return this.item;
}
}
// Using the class with different types
const stringStorage = new Storage<string>();
stringStorage.setItem("Understanding Generics is fun!");
console.log(stringStorage.getItem()); // "Understanding Generics is fun!"
const numberStorage = new Storage<number>();
numberStorage.setItem(42);
console.log(numberStorage.getItem()); // 42
پس از Generics یکپارچگی نوع را حفظ می کند، شما به طور تصادفی شماره ها را در یک ظرف رشته ذخیره نمی کنید.
🔗 ژنریک در رابط ها برای نوع شیء انعطاف پذیر
برای ایجاد ساختارهای بسیار سازگار می توانید ژنرال ها را در رابط ها اعمال کنید.
interface User<T> {
id: number;
data: T;
}
const user1: User<string> = { id: 1, data: "Admin" };
const user2: User<number[]> = { id: 2, data: [10, 20, 30] };
console.log(user1); // { id: 1, data: "Admin" }
console.log(user2); // { id: 2, data: [10, 20, 30] }
در اینجا data
می تواند باشد هر نوع، ایجاد رابط بسیار قابل استفاده مجدد.
🔥 افزودن محدودیت ها به عمومی
اگر می خواهید ** محدودیت ها ** در نوع عمومی ، استفاده کنید extends
:
function getLength<T extends { length: number }>(item: T): number {
return item.length;
}
console.log(getLength("Understanding Generics")); // ✅ Works (strings have `.length`)
console.log(getLength([1, 2, 3])); // ✅ Works (arrays have `.length`)
console.log(getLength({ length: 10 })); // ✅ Works (objects with length are allowed)
در اینجا T extends { length: number }
تضمین می کند که فقط ارزش ها با a .length
دارایی پذیرفته شده اند
🚀 مزایای ژنرال ها در TypeScript
- کد کمتری بنویسید – یک عملکرد یا کلاس برای انواع مختلف.
- انعطاف پذیری را افزایش دهید – در حالی که ایمنی نوع را اجرا می کند با انواع مختلف داده کار می کند.
- حفظ قابلیت حفظ – در هنگام افزودن انواع جدید ، نیازی به اصلاح مجدد نیست.
- برنامه های ضد آینده- با رشد پایگاه کد شما به راحتی مقیاس Generics می شود. ژنرال ها در TypeScript ضروری هستند و کد شما را کارآمد ، تمیز و قابل استفاده مجدد می کنند.
🎯 چالش نهایی: خودتان را امتحان کنید
نمی داند درک خود را از ژنرال ها آزمایش کنید؟ سعی کنید یک عملکرد عمومی را بنویسید که دو مقدار را اضافه می کند – باید برای هر دو عدد و رشته کار کند! راه حل خود را در نظرات زیر رها کنید.
🙋🏻♂ نمونه کارها من را کاوش کنید
اینجاست که نوآوری با تخصص روبرو می شود ✨ – ویترین با دقت ساخته شده من سفر حرفه ایبشر به دنیایی شیرجه بزنید که در آن هر پروژه داستان خود را از چالش های فتح شده 🏆 و راه حل های ساخته شده را بیان می کند. در حالی که نمونه کارها من قدرت فنی را نشان می دهد ، اما این نشان دهنده اشتیاق من برای فشار آوردن به مرزها و تفکر فراتر از حد متعارف است. آماده اتصال هستید؟ 🤝 مرا در LinkedIn پیدا کنید برای داستان کامل ماجراجویی حرفه ای من ، و بیایید همکاری های بالقوه را کشف کنیم. با هم ، ما فقط ممکن است چیزی خارق العاده ایجاد کنیم.