MST

星途 面试题库

面试题:TypeScript 泛型类与约束

创建一个TypeScript泛型类Queue,用于模拟队列数据结构。要求这个类有入队(enqueue)和出队(dequeue)方法。同时,限定泛型类型必须是具有length属性的类型,并解释为什么要设置这种约束以及如何实现。
37.2万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
class Queue<T extends { length: number }> {
    private items: T[] = [];

    enqueue(item: T) {
        this.items.push(item);
    }

    dequeue(): T | undefined {
        return this.items.shift();
    }
}

设置约束的原因:设置泛型类型T必须具有length属性,是为了确保队列中的元素都有一个可访问的length属性,这在某些需要根据元素长度进行特定操作的场景下非常有用。例如,当队列元素是字符串数组、数组等具有length属性的数据结构时,可以基于这个属性做进一步处理,同时也增强了代码的类型安全性,避免向队列中添加不满足特定结构要求的元素。

实现方式:在定义泛型类Queue时,通过T extends { length: number }语法对泛型类型T进行约束,表明T必须是具有length属性的类型。在类的实现中,无论是入队方法enqueue还是出队方法dequeue,都按照这个约束来处理T类型的元素,保证只有符合约束的元素才能进入队列并从队列中取出。