我想从一个对象数组中提取所有唯一属性,你可以使用spread运算符和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中,这给了我构建错误:
找不到姓名'设置'
我知道我可以强迫VS使用
忽略它declare var Set;
但是我希望TypeScript可以编译成非ES6,以便它可以在旧系统上使用。
有谁知道我能使用这样的功能吗?
修改:
实际上,即使我使用declare var Set;
,上面的代码也会编译,但会反复抛出此错误,所以即使没有编译,我也不确定如何使用它:
未捕获的TypeError :(中间值).slice不是函数
如何更新我的代码以在TypeScript中使用Set
答案 0 :(得分:2)
没有。如果编译为ES5或更旧的Typescript,则只添加ES6的语法更改。它不会添加任何标准库对象。
如果你想要那些我建议你研究core.js
之类的东西答案 1 :(得分:1)
这对我有用。
其中一个问题似乎是打字机要使用
ERROR TypeError: (intermediate value).slice is not a function
而不是Array.from();
无论如何,这个代码在我的Angular 4应用程序中为我工作
Array.from(new Set(Array)).sort(this.compareNumbers)
希望这有助于某人
答案 2 :(得分:0)
您可以使用此type script library。或者可以使用此库中的引用创建一个集合类