TypeScript是否具有等效的ES6" Set"

时间:2017-01-21 19:22:36

标签: javascript typescript ecmascript-6 set

我想从一个对象数组中提取所有唯一属性,你可以使用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

3 个答案:

答案 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。或者可以使用此库中的引用创建一个集合类