Javascript 如何让TypeScript在ES6到ES5中构建iterables?

Javascript 如何让TypeScript在ES6到ES5中构建iterables?,javascript,typescript,set,ecmascript-6,Javascript,Typescript,Set,Ecmascript 6,我正在尝试用Angular 2用TypeScript编写一个独特的用户对象数组。我使用简洁优雅的ES6方式创建了一个独特的阵列: this.users = Array.from(new Set(this.users)) 我在将TypeScript构建到ES5时遇到此错误: “Set”类型的参数不能分配给“IterableShim”类型的参数。 类型“Set”中缺少属性“es6垫片迭代器” 我尝试设置this.users:IterableShim,但IterableShim与string一样

我正在尝试用Angular 2用TypeScript编写一个独特的用户对象数组。我使用简洁优雅的ES6方式创建了一个独特的阵列:

  this.users = Array.from(new Set(this.users))
我在将TypeScript构建到ES5时遇到此错误:

“Set”类型的参数不能分配给“IterableShim”类型的参数。 类型“Set”中缺少属性“es6垫片迭代器”


我尝试设置
this.users:IterableShim
,但IterableShim与string一样不是可接受的类型。文档中说字符串、数组、TypedArray、Map和Set都是内置的iterable,因为它们的原型对象都有Symbol.iterator方法。(来源:)有没有一种方法可以让TypeScript编译ES6,并将其识别为ES5的可编辑项而不出错?

使用
lib
选项:

"lib": [
  "dom","es6"
]
以下工作很好:

let users = []
users = Array.from(new Set(users))
更多

ES5没有set或Array.from,甚至没有类似的iterables?不,它们在ES6中是新的。来源:这里有一个想法
this.users=this.users.slice()
使用slice绝不能解决如何获取TypeScript在ES5中构建iterables的问题。