الكتابة القوية - استخدام واجهة لتحديد نوع كائن مجهول في تايب سكريبت
لدي واجهة IBase ومتغير يحتوي على بعض الكائنات الأخرى (في المثال قمت بإضافة base لمزيد من التوضيح)
interface IBase {
height?:number;
width?:number;
}
var element = {
base: {
}
}
كيف يمكنني القول أن الكائن الذي يحتويه المتغير element.base هو من النوع IBase؟ أعلم أنني أستطيع إنشاء نوع للمتغير element يحتوي على أنواع base وغيرها، لكن هل من الممكن أيضًا تحديد نوع هذا السيناريو دون القيام بذلك.
الإجابة رقم 1
جواب فان دن برينك جيد. فقط كمثال خيار آخر:
var element = {
base: <IBase> {
}
}
سيعطي هذا أيضًا الاستخبارات المرغوبة:
الإجابة رقم 2
إذا قمت بتغيير تعريف var element إلى ما يلي، فإنه يعرف ما هو base:
var element: { base: IBase; } = {
base: {
}
}
ملاحظة: يمكنك أيضًا إنشاء واجهة جديدة لها مثل هذا الذي يجعلها قابلة لإعادة الاستخدام بعض الشيء: interface IElement { base: IBase; } ثم استخدمها كما هنا: var element: IElement={ base: {} }
