javascript - Har TypeScript en tilsvarende av ES6 "Sets"
Jeg vil trekke ut alle de unike egenskapene fra et array av objekter, du kan gjøre det i ES6 veldig ryddig ved å bruke spread-operatoren og Set slik:
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]
Men i TypeScript 1.8.31 gir dette meg byggefeilen:
Kan ikke finne navnet 'Set'
Jeg vet at jeg kan tvinge VS til å ignorere det ved å bruke
declare var Set;
Men jeg håper på noe TypeScript kan kompilere til ikke-ES6 slik at det kan brukes på eldre systemer.
Vet noen om det finnes en slik funksjon jeg kan bruke?
Rediger:
Faktisk, selv når jeg bruker declare var Set;, kompilerer koden ovenfor, men kaster denne feilen gjentatte ganger, så jeg er ikke sikker på hvordan jeg skal bruke den selv uten å kompilere ned:
Ufanget TypeError: (mellomliggende verdi).slice er ikke en funksjon
Hvordan kan jeg oppdatere koden min for å bruke Set i TypeScript?
Svar #1
Dette fungerte for meg.
Et av problemene ser ut til å være at TypeScript prøver å bruke
ERROR TypeError: (intermediate value).slice is not a function
i stedet for Array.from();
Uansett, denne koden fungerte for meg i min Angular 4-applikasjon
Array.from(new Set(Array)).sort(this.compareNumbers)
håper dette hjelper noen
Svar #2
Nei. Hvis du kompilerer til ES5 eller eldre, legger Typescript bare til de syntaktiske endringene fra ES6. Det legger ikke til noen av standardbibliotekobjektene.
Hvis du vil ha dem, foreslår jeg at du ser på noe som core.js
