ich alle die einzigartigen Eigenschaften von einem Array von Objekten extrahieren möchten, können Sie dies in ES6 sehr sauber, die Ausbreitung Operator und die Set so:Does Typoskript haben ein Äquivalent ES6 „Sets“
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]
jedoch in Typoskript 1.8.31 das gibt mir die Build-Fehler:
Cannot find name 'Set'
ich weiß, ich VS es
declare var Set;
012 durch die Verwendung zu ignorieren erzwingen
Aber ich hoffe auf etwas, das TypeScript in Nicht-ES6 kompiliert, so dass es auf älteren Systemen verwendet werden könnte.
Weiß jemand, ob es solch eine Eigenschaft gibt, die ich verwenden könnte?
bearbeiten:
Eigentlich, auch wenn ich declare var Set;
verwenden, kompiliert der obige Code aber wirft diesen Fehler wiederholt, so dass ich bin mir nicht sicher, wie es zu benutzen, auch ohne Kompilieren unten:
Uncaught TypeError: (intermediate value).slice is not a function
Wie kann ich meinen Code aktualisieren, um Set
in TypeScript zu verwenden?
Mögliche Duplikat [Angular 2 Typoskript kann keine Namen finden] (http: // Stackoverflow .com/questions/33332394/angular-2-typescript-cant-find-Namen) – jonrsharpe
TS muss nicht gleichwertig sein, da TS nach JS transpiliert, und 'Set' ist polyfillable JS-Funktion. Dies ist ein Duplikat, insbesondere http://stackoverflow.com/a/41608156/3731501. – estus
Ich nehme an, Sie könnten auch [das Typoskript zu ES6-Code kompilieren] (http://stackoverflow.com/questions/30439869/can-typescript-compile-to-es6-code) und dann das zu ES5 mit etwas wie babel transpilieren. Damit können Sie alle ES6-Sammlungen verwenden. – jfriend00