オブジェクトの配列からすべての一意のプロパティを抽出したいので、スプレッド演算子と 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]
ただし、TypeScript 1.8.31では、これによりビルドエラーが発生します。
名前 'Set'が見つかりません
私はVSを使用してそれを無視させることができることを知っています
declare var Set;
しかし、古いシステムで使用できるように、TypeScriptが非ES6にコンパイルされるものを期待しています。
私が使用できるそのような機能があるかどうか誰もが知っていますか?
編集:
実際、declare var Set;
を使用する場合でも、上記のコードはコンパイルされますが、このエラーが繰り返しスローされるため、コンパイルせずに使用する方法がわかりません。
Uncaught TypeError:(中間値).sliceは関数ではありません
TypeScriptでSet
を使用するようにコードを更新するにはどうすればよいですか?
いいえ。ES5以前のTypeScriptにコンパイルする場合、ES6からの構文の変更のみが追加されます。標準ライブラリオブジェクトは追加されません。
これらが必要な場合は、 core.js のようなものを調べることをお勧めします
これは私のために働いた。
問題の1つは、TypeScriptが使用しようとすることです
ERROR TypeError: (intermediate value).slice is not a function
array.from()の代わりに;
いずれにしても、このコードは私のAngular 4アプリケーションで私のために働いた
Array.from(new Set(Array)).sort(this.compareNumbers)
これが誰かを助けることを願って
これを使用できます type script library 。または、このライブラリからの参照を使用して、1つのセットクラスを作成することもできます