繁体   English   中英

Typescript数组未定义

[英]Typescript Array is undefined

我有一个函数,应该将多个JSON对象保存到“联系人”类型的数组中

getContacts(){
    let self = this;
    $.ajax({
        type: "GET",
        url: "/chat/contacts/",
        dataType:"json",
        success: function(response){
            let obj = response;
            let i = 1;
            let contacts: Contact[] = [];
            for (let key in obj) {
                if (obj.hasOwnProperty(key)) {
                    let val = obj[key];
                    contacts[i].id = val["id"]; //<-- contacts[i] is undefinded
                    contacts[i].partner = val["partnerId"];
                    contacts[i].name = val["name"];
                    contacts[i].type = val["type"];
                    console.log(contacts[i]);
                }
            }
        },
        error: function(jqXHR, textStatus, errorThrown){
            alert(errorThrown);
        }
    });
}

在标记点上说

联系人[i]未定义

我必须如何初始化数组才能使其正常工作?

这是联系人类别:

class Contact extends BaseModel{
    static CCO_ID = "id";
    static CCO_PARTNER = "partner";
    static CCO_NAME = "name";
    static CCO_TYPE = "type";


    partner: Number;
    name: String;
    type: Number;
}

您需要首先定义contacts[i]是一个对象,然后使用它的属性。

还有一件事,您从索引1开始,而Javascript数组的索引从0开始。 请注意是否不是故意的。

let val = obj[key];
contacts[i] = new Contact(); // <-- Look here
contacts[i].id = val["id"];
contacts[i].partner = val["partnerId"];
contacts[i].name = val["name"];
contacts[i].type = val["type"];
console.log(contacts[i]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM