Reactjs 对象的Typescript映射数组出现错误:property';(财产)和#x27;类型对象上不存在
我在React项目中使用typescript,并遍历对象数组以返回组件 我在应用程序中得到了预期的结果,控制台中没有错误,但在VSCode中我得到了以下错误: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
类型“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[]
。如果是这样,项
将自动获得typeItem
。啊……我不应该这么快回答。我会编辑它