面试题答案
一键面试function filterArray<T>(arr: T[], callback: (element: T) => boolean): T[] {
return arr.filter(callback);
}
- 类型参数定义:使用
T
作为类型参数,它代表数组中元素的类型。在函数定义filterArray<T>
中声明这个类型参数,这样在函数内部就可以用T
来表示数组元素类型。 - 参数类型声明:
arr
参数被声明为T[]
,这意味着它是一个元素类型为T
的数组。callback
参数是一个函数,它接受一个类型为T
的参数,并返回一个boolean
。 - 返回值类型声明:函数返回值类型为
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[]