Typescript помещает объект в массив, теряет определения - PullRequest
0 голосов
/ 24 августа 2018

Странная проблема возникает, когда я помещаю экземпляр класса в массив, похоже, что выталкиваются только атрибуты объекта, так как я больше не могу вызывать метод, определенный в этом объекте, из массива. Итак, у меня есть следующий код (я немного его сократил, чтобы его было проще читать).

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 просто отлично.

Есть ли другой подход для хранения нескольких экземпляров объекта в массиве?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...