Reactjs 对象的Typescript映射数组出现错误:property';(财产)和#x27;类型对象上不存在

Reactjs 对象的Typescript映射数组出现错误:property';(财产)和#x27;类型对象上不存在,reactjs,typescript,visual-studio-code,Reactjs,Typescript,Visual Studio Code,我在React项目中使用typescript,并遍历对象数组以返回组件 我在应用程序中得到了预期的结果,控制台中没有错误,但在VSCode中我得到了以下错误:类型“object”上不存在属性“amount”。对于我在映射中引用的每个属性 以下是代码片段: {recentHistory.map((item) => { if (item.type === 'ADD') { return <AddItem amount={item.amount} memo={ite

我在React项目中使用typescript,并遍历对象数组以返回组件

我在应用程序中得到了预期的结果,控制台中没有错误,但在VSCode中我得到了以下错误:
类型“object”上不存在属性“amount”。
对于我在映射中引用的每个属性

以下是代码片段:

{recentHistory.map((item) => {
    if (item.type === 'ADD') {
        return <AddItem amount={item.amount} memo={item.memo} />
    } else if (item.type === 'SUBTRACT') {
        return <SubtractItem amount={item.amount} memo={item.memo} />
    }
})}
{recentHistory.map((项)=>{
如果(item.type=='ADD'){
返回


同样,这会产生预期的输出,效果很好,VSCode只是抛出这些警告。

为表单项定义一个接口

interface Item {
  amount: number;
  memo: string;
  type: string;
}
现在,recentHistory属于object array类型,您可能在某个地方有这样的代码:

let recentHistory = [];
您需要更改声明以保存Item类型的数组:

let recentHistory: Array<Item> = [];
let recentHistory:Array=[];

信用证:

如何定义和填充
recentHistory
呢?你的recentHistory是如何类型的?你似乎在使用对象类型,而不是定义自定义接口。答案总是将其修正到更高的级别。现在你的
recentHistory
具有类型
object[]
。如果它的类型正确,则不需要在
.map
回调中执行任何操作。最近历史记录的上级是type object[],如果它是其他类型,则“Define an interface”是正确的。在回调中指定类型是解决问题的有效方法,应该在更高层进行修复(在我们没有看到的代码中)。
recentHistory
数组应该被键入为
Item[]
。如果是这样,
将自动获得type
Item
。啊……我不应该这么快回答。我会编辑它