Je veux extraire toutes les propriétés uniques d'un tableau d'objets, vous pouvez le faire dans ES6 très proprement en utilisant l'opérateur de propagation et le Set donc:
var arr = [ {foo:1, bar:2}, {foo:2, bar:3}, {foo:3, bar:3} ]
const uniqueBars = [... new Set(arr.map(obj => obj.bar))];
>> [2, 3]
Cependant, dans TypeScript 1.8.31, cela me donne l'erreur de construction:
Impossible de trouver le nom 'Set'
Je sais que je peux forcer VS à l'ignorer en utilisant
declare var Set;
Mais j'espère quelque chose que TypeScript compilera en non-ES6 afin qu'il puisse être utilisé sur des systèmes plus anciens.
Est-ce que quelqu'un sait s'il existe une telle fonctionnalité que je pourrais utiliser?
Modifier :
En fait, même lorsque j'utilise declare var Set;
, le code ci-dessus se compile mais renvoie cette erreur à plusieurs reprises, donc je ne sais pas comment l'utiliser même sans compiler:
TypeError non capturé: (valeur intermédiaire) .slice n'est pas une fonction
Comment mettre à jour mon code pour utiliser Set
dans TypeScript?
Non. Si vous compilez vers ES5 ou une version antérieure de TypeScript, seules les modifications syntaxiques par rapport à ES6 sont ajoutées. Il n'ajoute aucun des objets de bibliothèque standard.
Si vous en voulez, je vous suggère de regarder quelque chose comme core.js
Cela a fonctionné pour moi.
L'un des problèmes semble être que les essais TypeScript à utiliser
ERROR TypeError: (intermediate value).slice is not a function
au lieu de Array.from ();
en tout cas ce code a fonctionné pour moi dans mon Angular 4 applicaiton
Array.from(new Set(Array)).sort(this.compareNumbers)
j'espère que cela aide quelqu'un
Vous pouvez utiliser ceci type bibliothèque de scripts . Ou peut-être créer votre classe d'ensemble en utilisant la référence de cette bibliothèque