如何在TypeScript中迭代集合?
如何在TypeScript中迭代一个集合?因为..of不起作用:如何在TypeScript中迭代集合?,typescript,Typescript,如何在TypeScript中迭代一个集合?因为..of不起作用: 'Set<string>' is not an array type or a string type “Set”不是数组类型或字符串类型 .forEach不可接受,因为它隐藏了此。我不喜欢在try-catch块中执行while循环。我错过了什么?它不可能如此笨拙,以至于需要try{while}catch{}。您仍然可以使用.forEach和正确的这个,方法是使用常规函数而不是箭头函数 mySet.forEach(
'Set<string>' is not an array type or a string type
“Set”不是数组类型或字符串类型
.forEach
不可接受,因为它隐藏了此
。我不喜欢在try-catch块中执行while循环。我错过了什么?它不可能如此笨拙,以至于需要try{while}catch{}。您仍然可以使用.forEach
和正确的这个
,方法是使用常规函数而不是箭头函数
mySet.forEach(function(item){
expect(this).toEqual(item);
});
相比
class MyClass{
...
doSomething():{
mySet.forEach((item) => {
expect(this instanceof MyClass).toEqual(true);
});
}
}
另一种迭代方法是在值上使用for循环
for(item of mySet.values()){
...
}
有关使用foreach迭代
Set
的更多信息,请参见@SnareChops基本正确:
mySet.forEach(function(item){
// do something with "this"
}, **this**);
这很有效
我猜:
for(item of mySet.values()){
}
如果我没有处理那些把我的一切都搞砸了的东西,我会工作的。但垫片材料由Angular 2 crew规定,因此_(ツ)_/“”
唯一有效的其他方法是:
for (var item of Array.from(set.values())) {
}
或者类似的事情,这太可怕了。这对我很有用:
this.mySet.forEach((value: string, key: string) => {
console.log(key);
console.log(value);
});
我在这里找到了它:扩展了最高级的答案,如果我们对迭代变量使用
let
,它也是类型安全的,因此:
for (let elem of setOfElems) {
... do anything with elem...
}
这将保证
elem
将具有X类型,如果setOfElems
被声明为Set
,如果您在编译器选项中添加“es6”
作为“lib”
,并将“es6”
作为目标,则可以在TypeScript中使用for…of
,也可以使用“es2015.iterable”
取代库中的“es6”
,如果这更适合您的需要
例如(这将是您的tsconfig.json):
GitHub上的相关问题:我很感谢您的快速响应,但我发现以下情况是正确的:方法1:“这个”没有保留,我想通常情况下,lambda是保留“这个”方法的方法2:这个方法不适合我。除了“while”之外,我发现唯一有效的方法是方法是:for(varkey of Array.from(this.keys.values())),这远远不可取,因为我认为它创建了一个新的数组,而且Array.from并不是在所有地方都得到完全支持。下面的内容是真的吗?也许你的意思是
Array.from()
{
"compilerOptions": {
"target": "es6",
"lib": [
"es6",
"dom"
]
},
"exclude": [
"node_modules"
]
}