Typescript调用函数TypeError:this.array [i] .greet不是函数

时间:2017-01-16 00:18:40

标签: typescript

当我尝试调用我的函数时,我收到错误消息。如果我只创建someClass的一个对象然后调用greet函数它可以正常工作。

不工作(某些数组是someClass类型的数组):

for (let i = 0; i < this.someArray.length; i++) {

        this.someArray[i].greet();
}

使用:

let oneInstance: someClass = new someClass;
oneInstance.id = 'abc';
console.log(oneInstance.greet());

SomeArray是我的类someClass的数组:

export class someClass implements ISomeClass {

    id: string;

    public greet() {
        return "Hello, " + this.id;
    }
}

1 个答案:

答案 0 :(得分:1)

我的猜测是,当您使用数据填充数组时,您不是在创建类的实例,而是分配具有相同形状的对象。

例如你正在做:

this.someArray = json.results;

json.results的位置:

[{
    id: "id1"
} ... {
    id: "idn"
}]

这样做可以获得具有id的对象,但是他们没有类方法,因为你没有实例化类,你需要做类似的事情:

this.someArray = json.results.map(item => Object.assign(new someClass(), item));