类型的Typescript修复错误参数不可分配

时间:2019-12-01 16:32:13

标签: typescript

我不知道为什么我要面对一个问题。我有一个函数,需要一个对象数组。每个对象都有一个名为id的属性,我想从给定的数据中获取最后一个id。代码工作正常。

type Data = object;

const data = [
    {
        'id': 1,
        'name': 'Uncategorized',
    },
    {
        'id': 2,
        'name': 'DSLR Cameras',
    },
    {
        'id': 3,
        'name': 'Printer / Ink',
    },
];

const getLastId = (data: Data[]): number => {
    if (Array.isArray(data) && data.length > 0) {
        // Create an array of Id's of all items
        const idsArray: number[] = [];
        data.forEach((obj: { id: number }) => idsArray.push(obj.id));
        // Return last element id
        return idsArray[data.length - 1];
    } else {
        return 1;
    }
};

但是,在下面的一行中,出现了错误。

  

data.forEach((obj:{id:number})=> idsArray.push(obj.id));

TS2345: Argument of type '(obj: { id: number; }) => number' is not assignable to parameter of type '(value: object, index: number, array: object[]) => void'.
  Types of parameters 'obj' and 'value' are incompatible.
    Property 'id' is missing in type '{}' but required in type '{ id: number; }'.

这是什么类型的错误以及如何解决? Link

1 个答案:

答案 0 :(得分:0)

您的数据(我不喜欢这个名字)声明是Object,但是应该像这样:

type Data = {
    id: number,
    name: string,
};