如何在没有明确编写循环的情况下将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'
答案 0 :(得分:43)
您也可以
Array.from(my_set.values());
答案 1 :(得分:17)
"lib": ["es6"]
lib
选项。 答案 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中找到有关此标志的更详细说明。