عند مناقشة الميزات الأكثر استخفافًا في TypeScript، فإن الميزة التي غالبًا ما تطير تحت الرادار هي التأكيد الثابت. هذه الميزة مفيدة بشكل لا يصدق في سيناريوهات مختلفة، وتوفر فوائد كبيرة للمطورين.
للبدء، دعونا نحدد ما يفعله const. تخيل أن لديك كائنًا مثل هذا:
const routes = { home: "/home", profile: "/profile", notifications: "/notification", };
إذا قمت بالتمرير فوق خصائص المسارات، ستلاحظ أنها مكتوبة كسلسلة. على سبيل المثال، يتم كتابةways.home كسلسلة، وليس "/home". وذلك لأن TypeScript يفترض أن هذه الخصائص قد تتغير، لذا فهو يستنتجها كسلاسل قابلة للتغيير.
الآن، فكر في وظيفة يجب أن تقبل هذه المسارات المحددة فقط. يمكنك تحديد الأنواع مثل هذا:
function changeRoute(route: "home" | "profile" | "notifications") { // navigate to route }
يعمل هذا الأسلوب، ولكنه متكرر وعرضة للخطأ. إذا قمت بإضافة مسار جديد، فيجب عليك تحديث تعريف نوع الوظيفة، وهو ليس مثاليًا.
هنا يأتي دور const. باستخدام const، يمكنك جعل الكائن غير قابل للتغيير، وسوف يستنتج TypeScript الأنواع الحرفية بدلاً من مجرد سلسلة.
const routes = { home: "/home", profile: "/profile", notifications: "/notification", } as const;
الآن، يتم كتابةutes.home كـ "/home"، وutes.notifications كـ "/notifications"، وهكذا. يضمن هذا الثبات عدم إمكانية تغيير هذه الخصائص، ويتعرف TypeScript على قيمها المحددة.
لندمج كـ const في دالة:
function changeRoute(route: typeof routes[keyof typeof routes]) { // navigate to route }
هنا، يحصل نوع المسارات على نوع كائن المسارات، ويقوم مفتاح نوع المسارات باستخراج المفاتيح، مما يؤدي إلى الأنواع الدقيقة لقيم المسار. وهذا يجعل الوظيفة قابلة للتكيف مع أي تغييرات في كائن المسارات دون الحاجة إلى تحديثات متكررة.
هناك جانب قوي آخر لـ const وهو كيفية تمكين استخراج النوع. على سبيل المثال:
type Routes = (typeof routes)[keyof typeof routes];
يستخرج هذا النوع من التعريف قيم كائن المسارات ديناميكيًا، مما يجعل الوظيفة أكثر قابلية للصيانة ويقلل التكرار.
يعد التأكيد as const في TypeScript ميزة متعددة الاستخدامات وقوية يمكنها تحسين أمان الكتابة بشكل كبير وتقليل التكرار في التعليمات البرمجية الخاصة بك. من خلال جعل الكائنات غير قابلة للتغيير وتمكين الاستدلال الدقيق للنوع، فإنه يبسط صيانة وتوسيع قواعد التعليمات البرمجية. جربه، وسترى كيف يمكنه تحسين مشاريع TypeScript الخاصة بك!
برمجة سعيدة!
[الإفصاح: هذه المقالة عبارة عن جهد تعاوني، يجمع بين أفكاري الخاصة بمساعدة ChatGPT لتحسين التعبير.]
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3