我正在使用Array.prototype.filter从对象中返回特定条目,但是打字稿给我一个错误,即“类型'(current:currentInterface)=>布尔值的参数不能分配给类型'的参数” (值:[string,{}],索引:数字,数组:[string,{}] [])=>任何'。 参数“当前”和“值”的类型不兼容。”
current是一个对象,其中包含我要过滤的条目。
我怎样才能使它正常工作,为什么它目前不起作用?
似乎期望current是一个字符串,但是在普通JS中这不是必需的。
interface currentInterface {
firstName: string,
lastName: string,
[key: number]: any
}
//filter matching customers from list of customers by search term
const matchingCustomers = Object.entries(state.customers).filter((current: currentInterface) => {
let firstname = current[1].firstName.toLowerCase();
let lastname = current[1].lastName.toLowerCase();
let searchTerm = action.payload.searchTerm.toLowerCase();
return firstname === searchTerm || lastname === searchTerm;
});
Argument of type '(current: currentInterface) => boolean' is not assignable to parameter of type '(value: [string, {}], index: number, array: [string, {}][]) => any'.
Types of parameters 'current' and 'value' are incompatible.
Type '[string, {}]' is missing the following properties from type 'currentInterface': firstName, lastNamets(2345)
答案 0 :(得分:1)
由于Object.entries
返回一个数组数组,因此您正在分配一个接口。
从您的代码看来,您似乎正在寻找Object.values