【发布时间】:2019-12-02 01:03:18
【问题描述】:
我不知道为什么我会遇到问题。我有一个接受对象数组的函数。每个对象都有一个名为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
【问题讨论】:
-
我无法重现这个错误,你能创建一个在线可运行的例子吗?
-
@KamilNaja link
-
你应该只将 obj 作为参数传递给 forEach 回调
标签: typescript