当我尝试调用我的函数时,我收到错误消息。如果我只创建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;
}
}
答案 0 :(得分:1)
我的猜测是,当您使用数据填充数组时,您不是在创建类的实例,而是分配具有相同形状的对象。
例如你正在做:
this.someArray = json.results;
json.results
的位置:
[{
id: "id1"
} ... {
id: "idn"
}]
这样做可以获得具有id的对象,但是他们没有类方法,因为你没有实例化类,你需要做类似的事情:
this.someArray = json.results.map(item => Object.assign(new someClass(), item));