【发布时间】:2016-07-25 18:48:58
【问题描述】:
我正在尝试使用 TypeScript 在 Angular 2 中创建一个独特的用户对象数组。我正在使用简短而优雅的 ES6 方式来创建一个独特的数组:
this.users = Array.from(new Set(this.users))
当我将 TypeScript 构建到 ES5 时出现此错误:
“Set”类型的参数不能分配给“IterableShim”类型的参数。 类型“Set”中缺少属性“es6-shim 迭代器”。
我尝试设置 this.users : IterableShim<T> 但 IterableShim 不是可接受的类型,如字符串。文档说 String、Array、TypedArray、Map 和 Set 都是内置的可迭代对象,因为它们的原型对象都有 Symbol.iterator 方法。 (来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators)有没有办法让 TypeScript 编译 ES6,它识别为 ES5 的可迭代对象而不会出错?
【问题讨论】:
-
ES5 没有 Sets 或 Array.from,甚至没有类似的可迭代对象?
-
不,它们是 ES6 中的新功能。来源:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
这是一个想法
this.users = this.users.slice() -
使用 slice 并不能解决如何让 TypeScript 在 ES5 中构建可迭代对象。
标签: javascript typescript set ecmascript-6