Immutable List和Typescript正确定义具有类型的对象数组的方法

时间:2016-12-20 09:00:30

标签: typescript immutable.js immutablelist

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

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

]

我想定义使用此interface

的Immutable List对象
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>'

1 个答案:

答案 0 :(得分:1)

您的第一次尝试未分配不可变列表,它会将准确数据分配给myObjectList

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

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