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