MST

星途 面试题库

面试题:TypeScript 中泛型约束与条件类型的结合应用

假设你有一个函数,接收一个数组和一个回调函数,回调函数需要处理数组中的元素,并且该元素要满足特定条件(比如是数字类型且大于 10)。请使用泛型约束和条件类型来实现这个函数,说明设计思路并给出完整代码。
28.9万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

设计思路

  1. 使用泛型 T 来表示数组元素的类型。
  2. 通过条件类型 T extends number ? T : never 来约束数组元素必须是数字类型。
  3. 定义回调函数类型,该回调函数接收满足条件的数字类型元素。
  4. 遍历数组,调用回调函数处理满足条件的元素。

完整代码

function processArray<T extends number>(arr: T[], callback: (num: T extends number ? T : never) => void) {
    for (let num of arr) {
        if (typeof num === 'number' && num > 10) {
            callback(num as T extends number ? T : never);
        }
    }
}

// 使用示例
const numbers = [15, 20, 5];
processArray(numbers, (num) => {
    console.log(`处理数字: ${num}`);
});