Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类型为的typescript修复错误参数不可赋值_Typescript - Fatal编程技术网

类型为的typescript修复错误参数不可赋值

类型为的typescript修复错误参数不可赋值,typescript,Typescript,我不知道为什么我要面对一个问题。我有一个函数,它接受一个对象数组。每个对象都有一个名为id的属性,我想从给定的数据中获取最后一个id。代码运行良好 type Data = object; const data = [ { 'id': 1, 'name': 'Uncategorized', }, { 'id': 2, 'name': 'DSLR Cameras', }, { '

我不知道为什么我要面对一个问题。我有一个函数,它接受一个对象数组。每个对象都有一个名为
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})=>idsrarray.push(obj.id))

这是什么类型的错误以及如何修复?

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

类型数据={
身份证号码:,
名称:string,
};
您的数据(我不喜欢这个名称)声明是Object,但应该是这样的:

类型数据={
身份证号码:,
名称:string,
};

我无法重现此错误,您能创建一个在线可运行的示例吗?@KamilNaja您应该在forEach callback中仅将obj作为参数传递,我无法重现此错误,您可以创建一个在线可运行的示例吗?@KamilNaja您应该在forEach call back中将obj作为参数传递,但是现在对于具有
id
name
属性的特定形式的数据,
Data
是静态的。但是如果我有另一种形式的数据,它有
id
属性,但也有
地址
城市
zipcode
,那么我必须为该数据声明另一种自定义类型。我的意思是,这就是为什么我声明一个参数,它将接受任何对象的数组;您可以通过执行Data[“address”]向数据添加属性,但现在对于具有
id
name
属性的特定形式的数据,
Data
是静态的。但是如果我有另一种形式的数据,它有
id
属性,但也有
地址
城市
zipcode
,那么我必须为该数据声明另一种自定义类型。我的意思是,这就是为什么我声明一个参数,它将接受任何对象的数组;您可以通过执行Data[“adress”]向数据添加属性
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; }'.