首页 > 解决方案 > 类型“T [keyof T]”上不存在属性“toLowerCase”

问题描述

我正在尝试编写一个具有两个 args(obj 数组和搜索词的数组)的泛型类型的函数,但出现错误 -类型“T [keyof T]”上不存在属性“toLowerCase”

这是功能:

function matchSearchTerm<T>(data: T[], search: string): T[] {
  return data.filter((obj) => {
    const filteredData = (Object.keys(obj) as Array<keyof typeof obj>).some((value) => {
      return (
        typeof obj[value] === "string" && obj[value].toLowerCase().includes(search.toLowerCase())
      );
    });
    return filteredData;
  });
}

这里缺少什么?

标签: javascriptarraystypescriptgenericsjavascript-objects

解决方案


这个怎么样:

return obj[value]['toLowerCase']?.call(obj[value]).includes(search.toLowerCase())

在我看来,它返回 true/false/undefined -> for filters 它很好......或者我们可以使用一些三元运算符,如果我们只想要 true/false......


推荐阅读