属性...在类型'IntrinsicAttributes&...'上不存在

时间:2019-03-09 09:11:20

标签: reactjs typescript

我将.js文件更改为打字稿文件.tsx。我在文件中定义了以下功能:

function MyCard(param1: ObjectDto, toggleFunction: any) {}

我正在另一个这样的.tsx文件中使用此功能

<MyCard param1={param1Value} toggleFunction={myToggleFunction} />

但是我遇到以下错误:

  

键入'{param1:ObjectDto; toggleFunction:(索引:任何)=>无效; }'是   不可分配给'IntrinsicAttributes&ObjectDto'类型。属性   类型'IntrinsicAttributes&ObjectDto'上不存在'param1'。

在更改为Typescript格式之前,此方法工作正常。 我该如何解决Typescript问题?

2 个答案:

答案 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”类型