如何在Typescript中创建自定义对象数组

时间:2016-01-13 22:06:08

标签: javascript typescript visual-studio-2015

module NameSpacens{
    interface Serializable<T> {
        deserialize(input: Object): T;
    }

    export class Class1 implements Serializable<Class1>{
        private prop1: number;
        private prop2:string;
        constructor(va1?:number, va2?:string){
            this.prop1 = va1;
            this.prop2 = va2;
        }

        deserialize(jsonData){
            if (!(Array.isArray(jsonData))) {
                this.Index = jsonData.index;
                this.HeaderName = jsonData.headerName;
                this.SortName = jsonData.sortName;
                this.AllowSorting = jsonData.allowSorting;
                return this;
            }
            else {
                //How to code this portion to create list?
            }
        }
    }
}

var jsonDatas = [{ prop1: 1, prop2: "Test1"}, { prop1: 2, prop2: "Test2" }];

var coll:Array<NameSpacens.Class1> = new NameSpacens.Class1().deserialize(jsonDatas);

for coll我在编译期间遇到错误。

类型'Class1'不能分配给'Class1 []'类型。   'Class1'类型中缺少属性'length'。

另外我如何从JSON对象数组创建列表,在本例中为jsonDatas?

1 个答案:

答案 0 :(得分:1)

没有必要在初始化对象的类中有一个函数,这是构造函数的用途。

相反,您可以迭代 jsonDatas 数组并为每个数组创建一个新的类实例。

您可以通过地图电话轻松完成此操作。

module NameSpacens{

    export class Class1 {

        constructor(private prop1?:number, private prop2?:string){

        }


    }
}

var jsonDatas = [{ prop1: 1, prop2: "Test1"}, { prop1: 2, prop2: "Test2" }];

var coll:Array<NameSpacens.Class1> = jsonDatas.map((data) => new NameSpacens.Class1(data.prop1, data.prop2));