Typescript将对象推入数组,丢失方法定义

时间:2018-08-24 11:26:57

标签: javascript arrays angular typescript class

当我将类实例推入数组时出现奇怪的问题,似乎只有对象属性被推入,因为我无法再从数组中调用该对象中定义的方法。因此,我有以下代码(我将其缩短了一点,以使其尽可能易于阅读)。

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就好了。

是否存在将对象的多个实例保存到数组中的不同方法?

0 个答案:

没有答案