为什么打字稿显示我的Array.filter参数错误

时间:2019-05-28 07:16:11

标签: arrays typescript filtering

我正在使用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)

1 个答案:

答案 0 :(得分:1)

由于Object.entries返回一个数组数组,因此您正在分配一个接口。

从您的代码看来,您似乎正在寻找Object.values