面试题答案
一键面试function filterArray<T>(arr: T[], filterFunction: (element: T) => boolean): T[] {
return arr.filter(filterFunction);
}
解释:
- 泛型定义:这里使用了泛型
T
来表示数组中元素的类型,这样该函数就可以处理不同类型的数组。 - 参数逆变与返回值协变:
- 对于过滤函数
filterFunction
,它接收一个类型为T
的元素作为参数,因为T
是泛型,在不同调用场景下可以是不同类型,满足参数的逆变特性(即传入的过滤函数参数类型可以是实际数组元素类型的超类型)。 - 函数返回值类型为
T[]
,与传入数组arr
的类型保持一致,满足返回值的协变特性(即返回值类型可以是实际数组元素类型的子类型)。
- 对于过滤函数
- 类型检查:TypeScript 的类型系统会根据泛型
T
的实际类型,对数组元素和过滤函数的参数进行类型检查,确保函数的正确性和灵活性。例如,如果传入number[]
类型的数组,那么过滤函数的参数也必须是number
类型,返回值也会是number[]
类型。