我有一个带有以下签名的对象属性。
handleItem = (data: Output & { isValid: boolean }) => {}
我不理解&
部分。
基本上我试图传递一些参数:
handleItem (outputItem, { isValid: false })
我收到错误
Expected 1 arguments, but got 2.'
如何传递值属性?如何在此实例中使用&
?
答案 0 :(得分:2)
这称为Intersection Type
,这意味着param
方法的handleItem()
合并了Output
和{ isValid: boolean }
- 会说你的参数需要有两种类型,Output
和{ isValid: boolean }
。
所以你需要这样称呼它:
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
是布尔值