在TypeScript实验中,写一个使用迭代器遍历对象的例子,要求使用for...of进行遍历
时间: 2024-10-11 08:06:58 浏览: 28
js代码-ES6迭代器 for...of
在TypeScript中,你可以通过定义一个类(通常用于数据结构)并且实现`Iterable`接口或者`Symbol.iterator`方法,来创建一个可以被for...of循环遍历的对象。这里我们以一个简单的键值对对象为例:
```typescript
// 创建一个键值对对象
class KeyValuePair<K, V> implements Iterable<[K, V]> {
private data: { [key: K]: V };
constructor() {
this.data = {};
}
// 添加键值对
add(key: K, value: V) {
this.data[key] = value;
}
// 实现 Symbol.iterator 接口
[Symbol.iterator]() {
let index = 0;
return {
next: () => {
if (index < Object.keys(this.data).length) {
const key = Object.keys(this.data)[index];
index++;
return { value: [key, this.data[key]], done: false };
} else {
return { value: undefined, done: true };
}
},
};
}
}
// 使用示例
let keyValueObj = new KeyValuePair<string, number>();
keyValueObj.add('a', 1);
keyValueObj.add('b', 2);
for (const [key, value] of keyValueObj) {
console.log(`Key: ${key}, Value: ${value}`);
}
// 输出:
// Key: a, Value: 1
// Key: b, Value: 2
```
在这个例子中,`KeyValuePair`类实现了`Iterable`接口,通过`[Symbol.iterator]()`方法返回了一个包含了next方法的迭代器。每次for...of循环调用next,都会从data对象中获取下一个键值对,直到所有键值对都被遍历完。
阅读全文