MST

星途 面试题库

面试题:TypeScript泛型声明位置对代码结构和复用性的影响

假设有一个用于处理数据集合的工具库,要求通过在不同位置声明泛型来实现以下功能:1. 一个函数能接受任意类型数组并返回该数组的第一个元素;2. 一个类能存储任意类型的数据并提供获取和修改数据的方法。阐述这样在不同位置声明泛型对代码结构和复用性的好处,同时给出完整的TypeScript代码实现。
14.7万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

代码实现

// 1. 函数接受任意类型数组并返回第一个元素
function getFirst<T>(arr: T[]): T | undefined {
    return arr.length > 0? arr[0] : undefined;
}

// 2. 类存储任意类型数据并提供获取和修改数据的方法
class DataStore<T> {
    private data: T;
    constructor(value: T) {
        this.data = value;
    }
    get(): T {
        return this.data;
    }
    set(newValue: T) {
        this.data = newValue;
    }
}

好处

  1. 代码结构清晰:在函数和类上分别声明泛型,明确了每个代码单元的泛型作用域。例如在 getFirst 函数中,泛型 T 仅与数组元素类型相关,而 DataStore 类中的泛型 T 仅与存储的数据类型相关,使得代码结构更清晰,每个泛型的职责一目了然。
  2. 复用性高:函数 getFirst 可以用于任何类型的数组,而 DataStore 类可以存储任何类型的数据,无需为不同数据类型重复编写相似的逻辑。泛型的使用极大地提高了代码的复用性,减少了冗余代码。