**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
昨天关门了。
Improve this question
我想用 generator 实现一个 iterator -我已经很接近了:
class Container {
private readonly data = new Map<string, Set<string>>()
public add(level: string, name: string) {
const names = this.data.get(level);
if (names === undefined) {
this.data.set(level, new Set(name))
} else {
this.data.set(level, names.add(name))
}
}
*[Symbol.iterator]() {
for (const [level, names] of this.data.entries()) {
for (const name of names) {
yield [level, name]
}
}
}
}
当我用以下代码测试我的代码时:
let c = new Container()
c.add('beginner', 'oren')
c.add('beginner', 'moish')
c.add('advanced', 'uzi')
for (const [level, name] of c) {
console.log(`name: ${name} ---> level: ${level}`)
}
我的行为有点奇怪,我做错了什么?
$ npx tsc --downlevelIteration main.ts
$ node ./main.js
name: o ---> level: beginner
name: r ---> level: beginner
name: e ---> level: beginner
name: n ---> level: beginner
name: moish ---> level: beginner
name: u ---> level: advanced
name: z ---> level: advanced
name: i ---> level: advanced
1条答案
按热度按时间jv4diomz1#
Set(name)
构造函数中犯了错误,该构造函数迭代级别的名字的字母new Set([name])
效果很好