【发布时间】:2019-06-25 21:48:26
【问题描述】:
我有一个 React 组件;例如:
export class Component1 extends Component<IProps, IState> {
它接受的一个道具是一个函数:
export interface IProps {
a: number,
b: number,
onMouseClick: () => void
}
所以,当我使用这个组件时,我可以这样做:
<Component1 onMouseClick={() => this.DoStuff()} a={1} b={2} />
但是如果我想传入一个空函数,那么该函数在鼠标单击时什么也不做;例如:
<Component1 onMouseClick={() => void} a={1} b={2} />
Typescript 对我抱怨,说它需要一个表达式。我可以声明一个空函数;像这样:
<Component1 onMouseClick={() => function(){}} a={1} b={2} />
有没有更好的方法来声明一个空函数?我也有点不清楚为什么我可以在 IProps 定义中将属性 onMouseClick 分配为 void,但在使用组件时却不能。
【问题讨论】:
-
() => {}?() => void是 void 函数的 type,因此它在接口中的使用,而不是真正的函数定义。
标签: reactjs typescript