代码实现
class NumberArrayIterator {
private array: number[];
private index: number;
constructor(array: number[]) {
this.array = array;
this.index = 0;
}
next(): { value: number | undefined; done: boolean } {
if (this.index < this.array.length) {
const value = this.array[this.index];
this.index++;
return { value, done: false };
}
return { value: undefined, done: true };
}
}
使用示例
const numbers = [1, 2, 3];
const iterator = new NumberArrayIterator(numbers);
let result = iterator.next();
while (!result.done) {
console.log(result.value);
result = iterator.next();
}
类型约束的作用
- 类属性类型约束:在
NumberArrayIterator
类中,private array: number[]
明确指定了 array
属性必须是一个数字类型的数组。这意味着在构造函数中传入的参数也必须是数字数组,否则TypeScript编译器会报错。例如,如果传入 ['a', 'b']
这样的字符串数组,编译器会提示类型错误。
- 方法返回值类型约束:
next
方法的返回值类型被定义为 { value: number | undefined; done: boolean }
,明确了 value
要么是数字类型,要么是 undefined
,done
是布尔类型。这确保了调用者在使用 next
方法返回值时,能按照预期的类型来处理,比如可以安全地对 value
进行数字相关的操作,而不用担心类型不匹配的问题。如果方法内部返回的类型不符合这个定义,TypeScript编译器同样会报错。