类型为的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; }'.