MST

星途 面试题库

面试题:TypeScript 泛型在多态性复杂场景中的应用

在一个涉及多种数据类型操作且需要高度多态性的场景中,例如实现一个通用的数据处理库,要求使用 TypeScript 泛型来设计相关的函数和类,以满足不同数据类型的处理需求,同时保证类型安全和代码的简洁性。请详细说明设计思路并给出完整代码实现。
39.9万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

设计思路

  1. 函数设计:使用泛型参数来表示不同的数据类型,这样同一个函数可以处理多种类型的数据。
  2. 类设计:同样使用泛型参数,使类能够适用于不同的数据类型,同时利用接口约束泛型的行为,以保证类型安全。
  3. 多态性实现:通过泛型,不同类型的数据在调用相同函数或类方法时,会根据实际类型进行相应的处理,实现多态性。

代码实现

// 1. 泛型函数示例
function identity<T>(arg: T): T {
    return arg;
}

// 2. 泛型类示例
class GenericBox<T> {
    private value: T;
    constructor(value: T) {
        this.value = value;
    }
    getValue(): T {
        return this.value;
    }
}

// 3. 带有类型约束的泛型函数
interface Lengthwise {
    length: number;
}
function loggingIdentity<T extends Lengthwise>(arg: T): T {
    console.log(arg.length);
    return arg;
}

// 使用示例
let result1 = identity<string>("Hello");
let box = new GenericBox<number>(42);
let result2 = box.getValue();
let result3 = loggingIdentity([1, 2, 3]);