TypeScript预期有1个参数,但得到了2.'

时间:2018-02-02 13:37:29

标签: typescript

我有一个带有以下签名的对象属性。

handleItem = (data: Output & { isValid: boolean }) => {}

我不理解&部分。

基本上我试图传递一些参数:

handleItem (outputItem, { isValid: false })

我收到错误

Expected 1 arguments, but got 2.'

如何传递值属性?如何在此实例中使用&

4 个答案:

答案 0 :(得分:2)

这称为Intersection Type,这意味着param方法的handleItem()合并了Output{ isValid: boolean } - 会说你的参数需要有两种类型,Output{ isValid: boolean }

Typescript & operator

所以你需要这样称呼它:

handleItem ({ isValid: false, ...outputItem })

如果要传递两个参数,请执行以下操作:

handleItem = (data: Output, { isValid: boolean }) => {}

之后你可以这样做:

handleItem (outputItem, { isValid: false })

答案 1 :(得分:1)

&是类型交集Output & { isValid: boolean }表示它期望某些参数符合接口Output { isValid: boolean }。换句话说,它期望一个具有isValid属性的对象和其他Output定义的对象。

答案 2 :(得分:1)

handleItem只接受一个参数,一个具有Output属性和isValid属性的对象。你需要构造这样一个对象。使用扩展运算符是一个不错的选择:

handleItem ({ isValid: false, ...outputItem })

您可以阅读有关交叉类型here

的更多信息

答案 3 :(得分:0)

我认为语法期望数据的属性isValid是布尔值