Map با کلید قوی در تایپ اسکریپت – از صفر تا صد

۲۵۶
۱۴۰۲/۰۷/۳
۲ دقیقه
PDF
Map با کلید قوی در تایپ اسکریپت – از صفر تا صدMap با کلید قوی در تایپ اسکریپت – از صفر تا صد
آموزش متنی جامع
امکان دانلود نسخه PDF

منظور از Map با کلید قوی این است که Map را چنان بیان کنیم که تنها شامل کلیدهایی باشد که در دامنه اعضای همان نوع T یافت می‌شود. به بیان ساده‌تر تنها کلیدهایی معتبر هستند که با مشخصه دارای نام یکسان در هر نوع مفروض T متناظر باشند. این مفهوم را می‌توان به صورت زیر بیان کرد:

فهرست مطالب این نوشته
997696

اینک با استفاده از یک نوع واقعی اقدام به وهله‌سازی می‌کنیم:

کد فوق موجب می‌شود تنها اعضای Foo مجاز باشند و هر یک باید به مقدار متناظر true نگاشت شوند:

این کد کار می‌کند، اما استفاده هرباره از keyof یعنی انواع اندیس در وهله‌سازی کمی دشوار است و از این رو یک سطح دیگر از تجرید برای حل این مشکل ارائه می‌کنیم:

مشکل دوم استفاده از FooTrueSKM است که موجب عدم موفقیت در این بررسی می‌شود که آیا همه اعضای Foo در map وجود دارند یا نه. اما در غالب موارد می‌خواهیم تنها یک زیرمجموعه از کلیدها داشته باشیم. خوشبختانه تایپ اسکریپت یک نوع کاربردی <Partial<T ارائه کرده است که می‌توان مورد استفاده قرار داد:

یعنی می‌توان به صورت زیر عمل کرد:

بدین ترتیب یک راه‌حل کاملاً تعمیم‌یافته حاصل می‌شود که می‌توان برای بیان اطلاعات مرتبط در مورد یک وهله خاص بدون نیاز به آلوده ساختن تعریف نوع زیرین مورد استفاده قرار دارد.

Enum-ها

راه‌حلی که در بخش قبلی معرفی کردیم در مواردی که نوع واقعه T در عمل یک enum باشد نیز کار می‌کند، اما به کمی کار بیشتر نیاز دارد.

تعریف enum زیر را در نظر بگیرید:

اگر بخواهیم از همین راهبرد بنیادی برای وهله‌سازی نوع استفاده کنیم:

موجب شکست بررسی نوع می‌شود زیرا map در برابر مشخصه‌های غیرصریح enum یعنی toString, valueOf و غیره کلیدبندی شده است. با این حال ما می‌خواهیم یک map با حافظه قوی داشته باشیم، یعنی تنها کلیدهای ما در map یک enum را به حافظه بسپارند. شاید فکر کنید می‌توان از typeof به همراه keyof استفاده کرد:

اکنون گرچه به راه‌حل نزدیک شده‌ایم، اما همچنان مشکل به قوت خود باقی است. تعریف صحیح به صورت زیر است:

به typeof اضافی در آرگومان دامنه کلیدها توجه داشته باشید:

سخن پایانی

در این مقاله به یک راه‌حل برای تعریف map-های با کلید/اعضای قوی در تایپ اسکریپت دست یافتیم. به این منظور صرفاً باید مطمئن شوید که از نام‌گذاری نوع بهتری در کدهای واقعی پروداکشن خود استفاده می‌کنید.

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۴ نفر
آیا این مطلب برای شما مفید بود؟
اگر پرسشی درباره این مطلب دارید، آن را با ما مطرح کنید.
منابع:
better-programming
PDF
مطالب مرتبط
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *