chcę wyodrębnić wszystkie unikalne właściwości z tablicy obiektów, można to zrobić w ES6 bardzo czysto pomocą operatora spread i Set więc:Does maszynopis mieć równowartość ES6 „Zestawy”
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]
jednak w maszynopisie 1.8.31 to daje mi błąd kompilacji:
Cannot find name 'Set'
wiem, że mogę zmusić VS ignorować go za pomocą
declare var Set;
Mam jednak nadzieję, że coś, co TypeScript skompiluje do wersji innej niż ES6, będzie mogło być używane w starszych systemach.
Czy ktoś wie, czy jest taka funkcja, której mógłbym użyć?
Edit:
Faktycznie, nawet gdy używam declare var Set;
, powyższy kod kompiluje ale rzuca ten błąd wielokrotnie, więc nie jestem pewien, jak go używać nawet bez kompilowania dół:
Uncaught TypeError: (intermediate value).slice is not a function
Jak mogę zaktualizować mój kod, aby użyć formatu Set
w TypeScript?
Możliwy duplikat [Kątowymi 2 maszynopisu nie można znaleźć nazwy] (http: // stackoverflow .com/questions/33332394/angular-2-typescript-cant-find-names) – jonrsharpe
TS nie musi mieć odpowiednika tego, ponieważ TS transponuje do JS, a 'Set' jest funkcją JS z funkcją wielokrotnego napełniania. Jest to w szczególności duplikat, http://stackoverflow.com/a/41608156/3731501. – estus
Przypuszczam, że można również [skompilować maszynę do kodu ES6] (http://stackoverflow.com/questions/30439869/can-typescript-compile-to-es6-code), a następnie przenieść ją do ES5 z czymś podobnym do babel. To pozwoliłoby ci używać wszystkich kolekcji ES6. – jfriend00