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

Typescript调用函数TypeError:this.array[i].greet不是函数,typescript,Typescript,我尝试调用函数时出错。如果我只创建某个类的一个对象,然后调用greet函数,它就可以正常工作 不工作某些数组是someClass类型的数组: for (let i = 0; i < this.someArray.length; i++) { this.someArray[i].greet(); } export class someClass implements ISomeClass { id: string; public greet() {

我尝试调用函数时出错。如果我只创建某个类的一个对象,然后调用greet函数,它就可以正常工作

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

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

        this.someArray[i].greet();
}
export class someClass implements ISomeClass {

    id: string;

    public greet() {
        return "Hello, " + this.id;
    }
}
SomeArray是我的类someClass的数组:

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

        this.someArray[i].greet();
}
export class someClass implements ISomeClass {

    id: string;

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

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

例如,您正在做:

this.someArray = json.results;
其中json.results为:

这样做将得到具有id的对象,但它们没有类方法,因为您尚未实例化该类,因此需要执行以下操作:

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

能否显示声明和填充someArray的代码;保存得太快了。然后调用HTTP服务,将数据填充到someArray中。然后调用一个遍历列表的函数。如果我为实例控制台.logthis.someArray[I].id执行此操作,我会得到一个值,如果这有帮助的话。您能告诉我们从服务填充数据的代码吗?this.someService.getSomeClass.thendata=>{this.someArray=data;};服务看起来像这样:getSomeClass:Promise{返回this.http.getthis.uri.toPromise.thenresponse=>response.json.data作为someArray[].catchthis.handleError;}这是正确的原因,尽管该实现对我来说不起作用。对象的类型为object,但不是我的类的类型。我将它初始化为该类型的对象,填充字段,现在我的函数工作得很好!非常感谢尼赞。