设计思路
- 类型参数:使用泛型来处理不同类型的数据集合,这样函数可以适应多种数据类型。
- 类型约束:通过接口定义业务规则,例如数据对象必须包含的特定属性,然后将泛型约束为该接口类型。
- 生成器函数:实现一个生成器函数,遍历传入的数据集合并按顺序生成数据,确保生成的数据符合类型约束。
TypeScript代码实现
// 定义业务规则接口,例如数据对象必须包含id属性
interface DataWithId {
id: number;
}
// 通用生成器函数
function* dataGenerator<T extends DataWithId>(dataSet: T[]): Generator<T> {
for (const data of dataSet) {
yield data;
}
}
// 示例用法
const dataArray: { id: number, name: string }[] = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' }
];
const generator = dataGenerator(dataArray);
let result = generator.next();
while (!result.done) {
console.log(result.value);
result = generator.next();
}