这是我从服务器获取的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>'
答案 0 :(得分:1)
您的第一次尝试未分配不可变列表,它会将准确数据分配给myObjectList
。
您的第二次尝试是正确的,您得到的错误是因为编译器无法推断响应类型 尝试:
$http.get('my url to the json').then(function(data){
this.myObjectList = Immutable.List(data.data as Queries);
});