如何在TypeScript中将Set转换为数组

时间:2016-04-24 21:38:30

标签: arrays typescript set typescript1.8

如何在没有明确编写循环的情况下将Type中的Set(例如{2,4,6})转换为数组[2,4,6]?

我尝试了以下方法,所有这些方法都在JavaScript中工作,但它们都不适用于TypeScript

[...set] // ERR: "Type 'Set<{}>' is not an array type" in typescript

Array.from(set) // ERR: Property 'from' does not exist on type 'ArrayConstructor'

5 个答案:

答案 0 :(得分:43)

您也可以

Array.from(my_set.values());

答案 1 :(得分:17)

修复

  • 将tsconfig.json与"lib": ["es6"]
  • 一起使用

更多

答案 2 :(得分:3)

如果您以这种方式声明您的集合:

const mySet = new Set<string>();

您将能够轻松使用:

let myArray = Array.from( mySet );

答案 3 :(得分:0)

或者简单地

const mySet = new Set<string>();
mySet.add(1);
mySet.add(2);
console.log([...mySet.values()]);

答案 4 :(得分:0)

@basarat的回答不足以解决我的问题:尽管esnext数组中有lib,但我无法使用传播运算符。

要在集合和其他ES2015可迭代对象上正确使用扩展运算符,我必须启用downlevelIteration编译器选项。

以下是通过tsconfig.json进行设置的方法:

{
  "compilerOptions": {
    "downlevelIteration": true
  }
}

您将在TS documentation page about compiler options中找到有关此标志的更详细说明。