繁体   English   中英

TypeScript是否具有等效的ES6“集合”

[英]Does TypeScript have an equivalent of ES6 “Sets”

我想从一个对象数组中提取所有唯一属性,你可以使用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中,这给了我构建错误:

找不到名字'Set'

我知道我可以通过使用迫使VS忽略它

declare var Set;

但我希望TypeScript可以编译成非ES6,以便它可以在旧系统上使用。

有谁知道我可以使用这样的功能吗?

编辑

实际上,即使我使用declare var Set; ,上面的代码编译但重复抛出此错误,所以即使没有编译,我也不确定如何使用它:

未捕获的TypeError :(中间值).slice不是函数

如何更新我的代码以在TypeScript中使用Set

不可以。如果您编译为ES5或更旧的Typescript,只会添加ES6的语法更改。 它不会添加任何标准库对象。

如果你想要那些我建议你看看像core.js

这对我有用。

其中一个问题似乎是要使用的打字稿

ERROR TypeError: (intermediate value).slice is not a function

而不是Array.from();

无论如何,这个代码在我的Angular 4应用程序中适用于我

Array.from(new Set(Array)).sort(this.compareNumbers)

希望这有助于某人

您可以使用此类型的脚本库 或者可以使用此库中的引用创建一个集合类

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM