Lets say I have a base class with some property dataItems which is array of DataItem:
export class BaseClass{
dataItems:DataItems[];
}
Then I have several classes which extend BaseClass and their dataItems property is an array of some class which extends DataItems:
export class BetterClass extends BaseClass{
dataItems:BetterDataItems[];
}
export class BestClass extends BaseClass{
dataItems:BestDataItems[];
}
Now I want to add a method in BaseClass which creates dataItems and adds them to array. Would it be possible to do all of this in BaseClass? I need to create instance of BetterDataItems or BestDataItems, depending on the class used.
At the moment I simply added:
dataItemType: typeof DataItem;
property to BaseClass and in each class extending BaseClass I override this variable with the proper data item type:
in BetterClass:
dataItemType: typeof BetterDataItem = BetterDataItem;
in BestClass:
dataItemType: typeof BestDataItem = BestDataItem;
And then, in BaseClass I do this:
var dataItem = new this.dataItemType();
This works fine but my question is - would it be possible to avoid having dataItemType property at all? Can I find a type of dataItems array and create a new instance then?
Thanks!