Странная проблема возникает, когда я помещаю экземпляр класса в массив, похоже, что выталкиваются только атрибуты объекта, так как я больше не могу вызывать метод, определенный в этом объекте, из массива. Итак, у меня есть следующий код (я немного его сократил, чтобы его было проще читать).
class BaseSet implements ISet {
public testAttr: string;
constructor(baseStr) {
this['testAttr'] = baseStr;
}
}
class ExtendedSet extends BaseSet implements IExtendedSet {
public testAttrExtended: string;
constructor(baseStr) {
super(baseStr);
this['testAttrExtended'] = baseStr;
}
public test(): string {
return 'tetetetest';
}
}
class BaseClass {
}
class ExtendedClass extends BaseClass {
public sets?: ExtendedSet[];
public set?: ExtendedSet;
constructor() {
super();
this['set'] = new ExtendedSet('foo');
this['sets'] = new Array<ExtendedSet>();
this['sets'].push(new ExtendedSet('foo'));
}
}
let classInstance = new ExtendedClass();
console.log(classInstance.set.test());
console.log(classInstance.sets[0].test());
console.log(classInstance.sets[0].testAttrExtended);
В основном, что происходит, я помещаю объект в массив, после чего я больше не могу ссылаться на методы этого объекта.
Здесь
classInstance.set.test ()
возвращает tetetetest, но
classInstance.sets [0] .test ()
выдает ошибку
classInstance.sets [0] .test не является функцией
А затем вызов атрибута testAttrExtended возвращает foo просто отлично.
Есть ли другой подход для хранения нескольких экземпляров объекта в массиве?