gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 07:56:27 26 4
gpt4 key购买 nike

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);

对于 coll,我在编译时遇到以下错误。

类型“Class1”不可分配给类型“Class1[]”。 类型“Class1”中缺少属性“length”。

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

最佳答案

类中不需要有一个函数来初始化对象,这就是构造函数的用途。

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

您可以通过 map 调用轻松完成此操作。

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));

关于javascript - 如何在 Typescript 中创建自定义对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34777999/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com