كيفية إنشاء الكائنات الديناميكية في TypeScript
هل توجد أي طريقة لتعريف نوع كائن ديناميكي في TypeScript؟ في المثال التالي، أود تعريف نوع لـ "نوعي المعقد" بالقول:
الكائنات من نوع "نوعي المعقد" هي كائنات تحتوي على "أي عدد من الخصائص" ولكن يجب أن تكون قيم هذه الخصائص من نوع IValue.
// value interface
interface IValue {
prop:string
}
// My Complex Type
myType = {
field1:IValue
field2:IValue
.
.
.
fieldN:IValue
}
// Using My Complex Type
interface SomeType {
prop:My Complex Type
}
الإجابة رقم 1
نعم، يمكن تحقيق هذا النوع من السلوك، ولكن بطريقة مختلفة قليلاً. فقط تحتاج إلى استخدام واجهة TypeScript، مثل:
interface IValue {
prop: string
}
interface MyType {
[name: string]: IValue;
}
الذي سيتم استخدامه كمثال مثل:
var t: MyType = {};
t['field1'] = { prop: null };
t['field2'] = new DifferentType(); // compile-time error
...
var val = t['field1'];
val.prop = 'my prop value';
لا تحتاج إلى إنشاء فئة TypeScript، كل ما تحتاجه هو كائن جافاسكريبت عادي (في هذه الحالة {}) وجعله يطبق الواجهة MyType، بحيث يتصرف مثل القاموس ويوفر لك أمان النوع في وقت الترجمة.
