1

这是我从服务器获取的 JSON 数据

[
  {
    "property1": 1,
    "property2": "asd",
    "property3": 2
  },
  {
    "property1": 1,
    "property2": "asd",
    "property3": 2
  },
  {
    "property1": 1,
    "property2": "asd",
    "property3": 2
  }

]

我想定义使用这个的不可变列表对象interface

export interface myObject {
    propert1: number,
    propert2: string,
    propert3: number
}

我尝试了这样的事情,但它不起作用:

private myObjectList: Immutable.List<myObject> = Immutable.List([]);

然后使用angular $http

$http.get('my url to the json').then(function(data){
   this.myObjectList = data.data;
});

但是myObjectList variable与 json 完全相同,相反我想保留不可变列表对象,并以某种方式将数据推送到我的特定类型中。换句话说,如果 JSON 对象不完全一样interface myObject,它应该返回一个错误

我也试过这个,但后来我得到打字稿错误

$http.get('my url to the json').then(function(data){
   this.myObjectList = Immutable.List(data.data);
});

error: Type 'List<{}>' is not assignable to type 'List<Queries>'
4

1 回答 1

1

您的第一次尝试没有分配不可变列表,而是将确切的数据分配给myObjectList.

您的第二次尝试是正确的,您得到的错误是因为编译器无法推断响应类型。
尝试:

$http.get('my url to the json').then(function(data){
   this.myObjectList = Immutable.List(data.data as Queries);
});
于 2016-12-20T09:14:06.937 回答