MST
星途 面试题库

面试题:TypeScript索引类型与索引签名在泛型及条件类型中的深度应用

编写一个泛型函数`filterByProperty`,该函数接收一个对象数组、一个属性名和一个值。使用索引类型、索引签名、泛型和条件类型,筛选出数组中指定属性值等于给定值的对象。例如,对于数组`[{name: 'apple', color:'red'},{name: 'banana', color: 'yellow'},{name: 'cherry', color:'red'}]`,调用`filterByProperty`函数并传入`color`和`'red'`,应返回`[{name: 'apple', color:'red'},{name: 'cherry', color:'red'}]`。同时要确保类型的严格性和兼容性,使函数在不同类型的对象数组上都能正确工作。
11.3万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function filterByProperty<T extends Record<string, any>, K extends keyof T>(
    arr: T[],
    property: K,
    value: T[K]
): T[] {
    return arr.filter((obj) => obj[property] === value);
}