Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TypeScript是否具有ES6的等效项;套;_Javascript_Typescript_Ecmascript 6_Set - Fatal编程技术网

Javascript TypeScript是否具有ES6的等效项;套;

Javascript TypeScript是否具有ES6的等效项;套;,javascript,typescript,ecmascript-6,set,Javascript,Typescript,Ecmascript 6,Set,我想从对象数组中提取所有唯一属性,您可以在ES6中非常干净地使用spread操作符和so: 但是,在TypeScript 1.8.31中,这给了我生成错误: 找不到名称“Set” 我知道我可以通过使用 declare var Set; 但我希望TypeScript能够编译成非ES6,这样它就可以在旧系统上使用 有人知道我是否可以使用这样的功能吗 编辑: 实际上,即使我使用声明var Set,上面的代码可以编译,但会反复抛出此错误,因此即使不进行编译,我也不确定如何使用它: 未捕获类型错误:(中

我想从对象数组中提取所有唯一属性,您可以在ES6中非常干净地使用spread操作符和so:

但是,在TypeScript 1.8.31中,这给了我生成错误:

找不到名称“Set”

我知道我可以通过使用

declare var Set;
但我希望TypeScript能够编译成非ES6,这样它就可以在旧系统上使用

有人知道我是否可以使用这样的功能吗

编辑

实际上,即使我使用
声明var Set,上面的代码可以编译,但会反复抛出此错误,因此即使不进行编译,我也不确定如何使用它:

未捕获类型错误:(中间值)。切片不是函数


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

否。如果编译到ES5或更旧的TypeScript,则只添加来自ES6的语法更改。它不添加任何标准库对象

如果你想要这些,我建议你研究类似的东西,你可以用这个。或者使用此库中的引用创建一个集合类

这对我很有用

其中一个问题似乎是typescript试图使用

ERROR TypeError: (intermediate value).slice is not a function
而不是Array.from()

无论如何,这个代码在我的Angular 4应用程序中对我有效

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

希望这有助于某人

TS的可能副本不必有与此等效的副本,因为TS可传输到JS,并且
Set
是可多填充的JS功能。这是一个复制品,特别是。我想你也可以用babel之类的东西将它传输到ES5。这将允许您使用所有ES6集合。我发现类型为“ArrayConstructor”的错误
参数不可分配给类型为“Iterable”的参数。类型“ArrayConstructor”中缺少属性“[Symbol.iterator]”。
您是否能够解决此问题?在productionso中,这仍然适用于我,我所做的是相同的,
let set=new set()
导入'core js/es6/set'已导入my polyfills.ts谢谢!确认
[…数组.from(新集合([…arr1,…arr2])]
有效,但
[…(新集合([…arr1,…arr2])]
给出了
(中间值)。切片不是函数
错误。
Array.from(new Set(Array)).sort(this.compareNumbers)