我将.js文件更改为打字稿文件.tsx。我在文件中定义了以下函数:
function MyCard(param1: ObjectDto, toggleFunction: any) {}
我在另一个.tsx文件中使用此函数
<MyCard param1={param1Value} toggleFunction={myToggleFunction} />
但是我收到以下错误:
输入'{param1:ObjectDto; toggleFunction :( index:any)=> void; ''不能赋值为'IntrinsicAttributes&ObjectDto'。 'IntrinsicAttributes&ObjectDto'类型中不存在属性'param1'。
在更改为Typescript格式之前,此工作正常。我如何解决这个问题?
组件只有一个参数,即props
对象,因此您的函数应该如下所示:
function MyCard(props: { param1: ObjectDto, toggleFunction: any }) {}
类型系统试图将属性与函数的第一个参数匹配,该参数的类型为ObjectDto
。这就是你得到错误的原因
不能分配给'IntrinsicAttributes&ObjectDto'类型
您是否为组件“MyCard”创建了界面?
像这样:interface MyCodeParams {
param1: ObjectDto
toggleFunction: (param: any) => void
}
此外,我认为toggleFunction: (param?: any) => void
是正确的类型,因为你的函数可能有参数,所以你应该像这样输入你的函数。