Javascript TypeScript是否具有ES6的等效项;套;
我想从对象数组中提取所有唯一属性,您可以在ES6中非常干净地使用spread操作符和so: 但是,在TypeScript 1.8.31中,这给了我生成错误: 找不到名称“Set” 我知道我可以通过使用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,上面的代码可以编译,但会反复抛出此错误,因此即使不进行编译,我也不确定如何使用它: 未捕获类型错误:(中
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)