Я хочу, чтобы извлечь все уникальные свойства из массива объектов, вы можете сделать это в ES6 очень аккуратно, используя оператор раздвигания и Set так:ли машинопись есть эквивалент ES6 «Установка»
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]
Однако в машинописном 1.8.31 это дает мне ошибку сборки:
Cannot find name 'Set'
Я знаю, что я могу заставить VS игнорировать его с помощью
declare var Set;
Но я надеюсь на что-то, что TypeScript будет компилироваться в не-ES6, чтобы его можно было использовать в старых системах.
Кто-нибудь знает, есть ли такая возможность, которую я мог бы использовать?
Edit:
На самом деле, даже когда я использую declare var Set;
, приведенный выше код компилируется, но выдает эту ошибку несколько раз, так что я не знаю, как использовать его, даже без компиляции вниз:
Uncaught TypeError: (intermediate value).slice is not a function
Как я могу обновить свой код, чтобы использовать Set
в TypeScript?
Возможный дубликат [Угловое 2 машинописи не могут найти имена] (Http: // StackOverflow .com/questions/33332394/angular-2-typescript-can-find-names) – jonrsharpe
TS не обязательно должен иметь эквивалент этого, потому что TS переводится в JS, а 'Set' является многозадачной функцией JS. Это дубликат, в частности, http://stackoverflow.com/a/41608156/3731501. – estus
Я полагаю, вы могли бы также [скомпилировать машинописный код для кода ES6] (http://stackoverflow.com/questions/30439869/can-typescript-compile-to-es6-code), а затем перевести это на ES5 с помощью чего-то вроде babel. Это позволит вам использовать все коллекции ES6. – jfriend00