immutable.js - Liste immuable et Typescript façon correcte de définir un tableau d'objets avec type
Voici mes données JSON que je reçois du serveur
[
{
"property1": 1,
"property2": "asd",
"property3": 2
},
{
"property1": 1,
"property2": "asd",
"property3": 2
},
{
"property1": 1,
"property2": "asd",
"property3": 2
}
]
Je veux définir un objet Liste Immutable qui utilise cette interface
export interface myObject {
propert1: number,
propert2: string,
propert3: number
}
J'ai essayé quelque chose comme ça mais ça ne fonctionne pas :
private myObjectList: Immutable.List<myObject> = Immutable.List([]);
et ensuite en utilisant angular $http
$http.get('my url to the json').then(function(data){
this.myObjectList = data.data;
});
Mais ensuite, la variable myObjectList est exactement la même que le json, alors que je veux plutôt garder l'objet Liste Immutable et d'une manière ou d'une autre y insérer les données avec mon Type spécifique. En d'autres termes, si les objets JSON ne correspondent pas exactement à l'interface myObject, cela devrait retourner une erreur
J'ai aussi essayé cela mais ensuite j'obtiens une erreur TypeScript
$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>'
Réponse #1
Votre première tentative n'assigne pas une liste immuable, elle assigne les données exactes à myObjectList.
Votre deuxième tentative est correcte, l'erreur que vous obtenez est due au fait que le compilateur ne peut pas déduire le type de réponse.
Essayez :
$http.get('my url to the json').then(function(data){
this.myObjectList = Immutable.List(data.data as Queries);
});
