【发布时间】:2021-08-26 07:13:12
【问题描述】:
我正在尝试编写一个具有两个 args(obj 数组和搜索词的数组)的泛型类型的函数,但我收到一个错误 - Property 'toLowerCase' 在类型 'T[keyof T] 上不存在'
这里是函数:
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;
});
}
这里缺少什么?
【问题讨论】:
-
您的数组是泛型类型
T,而函数toLowerCase()未在该类型上定义,因此出现错误消息。您需要将数组项转换为string。
标签: javascript arrays typescript generics javascript-objects