MST
星途 面试题库

面试题:复杂场景下TypeScript迭代器与生成器类型约束的设计

假设你正在开发一个数据处理系统,需要处理多种不同类型的数据集合(如对象数组、自定义数据结构等)。请设计一个通用的生成器函数,它能够适用于不同类型的数据集合,并通过类型约束确保生成器产生的数据符合特定的业务规则(例如,数据对象必须包含特定属性)。描述你的设计思路,并给出具体的TypeScript代码实现。
40.8万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

设计思路

  1. 类型参数:使用泛型来处理不同类型的数据集合,这样函数可以适应多种数据类型。
  2. 类型约束:通过接口定义业务规则,例如数据对象必须包含的特定属性,然后将泛型约束为该接口类型。
  3. 生成器函数:实现一个生成器函数,遍历传入的数据集合并按顺序生成数据,确保生成的数据符合类型约束。

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();
}