将JSON对象转换为TypeScript类实例

时间:2016-03-24 10:35:28

标签: angularjs typescript

我有一个类有一个方法:

 export class ItemType {
        id1: string;
        description: string;

        treeItemTypeDescription(): string {
            return this.id1 +  this.description;
        }
 }

我获取此类表单Web服务的数据,并希望调用此方法:

itemTypeResource.parents(this.originalPosition).then((parents: app.domain.ItemType[]) => {
      console.log(typeof(parents[0]));
      console.log(parents[0].treeItemTypeDescription());
});

但是得到错误:

TypeError: parents[0].treeItemTypeDescription is not a function

我认为JS-object的错误原因与TS-object没有关联。但我不知道如何解决它。

更新

的console.log(Object.getOwnPropertyNames(父母[0]));

仅提供字段,但不提供方法:

 ["autoincrementedId", "description", "entityType", "excelId", "excelParentId", "id1", "id2", "id3", "id4", "id5", "parentAutoId"]

UPDATE2:

如果我自己创建对象,一切正常:

  var s = new app.domain.ItemType();
  s.id1 = "1";
  s.description = "some";
  console.log(s.treeItemTypeDescription());

1 个答案:

答案 0 :(得分:2)

这是我找到的解决方案:

static fromJSON(json: app.domain.ItemType): app.domain.ItemType {

        var result = new ItemType();

        for (var key in json) {
            if(result.hasOwnProperty(key)) {
                result[key] = json[key]
            }
        }

        return result;
    }

我创建了将JSON对象转换为TS对象的静态方法