MST

星途 面试题库

面试题:TypeScript严格模式下的泛型与类型推断的复杂应用

编写一个TypeScript函数`mapAndFilter`,它接受一个数组和两个函数作为参数。第一个函数用于映射数组元素,第二个函数用于过滤数组元素。要求在严格模式下,利用泛型和类型推断确保类型安全,并且要处理好函数返回值的类型。请说明在此过程中TypeScript严格模式是如何保障类型准确性的。
36.4万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function mapAndFilter<T, U>(
    arr: T[],
    mapFn: (element: T) => U,
    filterFn: (element: U) => boolean
): U[] {
    return arr.map(mapFn).filter(filterFn);
}

在TypeScript严格模式下,保障类型准确性体现在以下几个方面:

  1. 泛型约束:使用TU泛型分别表示输入数组元素类型和映射后元素类型,使得函数适用于各种类型数组,同时明确函数参数和返回值类型关系。
  2. 参数类型检查:严格模式确保传入的mapFn接受T类型参数并返回U类型,filterFn接受U类型参数并返回布尔值,若类型不匹配则编译报错。
  3. 返回值类型推断:根据mapfilter操作,TypeScript能准确推断出返回值类型为U[],开发者无需显式声明,减少类型错误风险。