MST

星途 面试题库

面试题:TypeScript类型推断在泛型中的复杂应用

实现一个泛型函数,它接受一个数组和一个回调函数作为参数。回调函数接受数组元素类型作为参数并返回一个新值。该泛型函数需要根据传入的数组元素类型以及回调函数的返回类型,通过类型推断正确返回处理后的新数组类型。请详细说明类型推断的过程。
45.9万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function mapArray<T, U>(arr: T[], callback: (element: T) => U): U[] {
    return arr.map(callback);
}

// 类型推断过程:
// 1. 定义泛型函数 `mapArray`,有两个类型参数 `T` 和 `U`。
// 2. `arr` 参数类型为 `T[]`,表示接受一个元素类型为 `T` 的数组。
// 3. `callback` 参数类型为 `(element: T) => U`,表示接受一个函数,该函数接受类型为 `T` 的参数,并返回类型为 `U` 的值。
// 4. 通过 `arr.map(callback)` 调用数组的 `map` 方法,`map` 方法会对数组中的每个元素应用 `callback` 函数,并返回一个新数组。
// 5. 由于 `callback` 函数返回类型为 `U`,所以新数组的元素类型为 `U`,整个函数的返回类型就是 `U[]`。

// 示例使用
const numbers = [1, 2, 3];
const squaredNumbers = mapArray(numbers, (num) => num * num); 
// 这里 `T` 被推断为 `number`,`U` 也被推断为 `number`,返回类型为 `number[]`