MST

星途 面试题库

面试题:TypeScript数组类型在泛型中的复杂应用

编写一个泛型函数,它接受一个数组和一个回调函数,回调函数接受数组元素类型的参数并返回一个布尔值。该泛型函数返回数组中满足回调函数条件的所有元素组成的新数组。请详细说明如何使用TypeScript的类型系统确保函数的类型安全性和通用性,特别是在处理不同类型数组时。
32.7万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function filterArray<T>(arr: T[], callback: (element: T) => boolean): T[] {
    return arr.filter(callback);
}
  1. 类型参数定义:使用 T 作为类型参数,它代表数组中元素的类型。在函数定义 filterArray<T> 中声明这个类型参数,这样在函数内部就可以用 T 来表示数组元素类型。
  2. 参数类型声明arr 参数被声明为 T[],这意味着它是一个元素类型为 T 的数组。callback 参数是一个函数,它接受一个类型为 T 的参数,并返回一个 boolean
  3. 返回值类型声明:函数返回值类型为 T[],即与传入数组 arr 元素类型相同的数组。这样无论传入什么类型的数组,函数返回的数组类型与传入数组类型一致,确保了类型安全性和通用性。

例如,可以这样调用:

const numbers = [1, 2, 3, 4, 5];
const evenNumbers = filterArray(numbers, (num) => num % 2 === 0);
// evenNumbers 类型为 number[]

const strings = ['a', 'b', 'c'];
const longStrings = filterArray(strings, (str) => str.length > 1);
// longStrings 类型为 string[]