这两个流类型别名之间有什么区别?

时间:2019-02-25 16:11:51

标签: reactjs flowtype

有人可以解释一下React应用程序中这两种流类型别名之间的区别吗?

type Props = {
    handleChange(): void, // 1 
    handleChange: () => void, // 2
}

2 个答案:

答案 0 :(得分:1)

两者都定义了名为handleChange的可调用对象,这些可调用对象不带参数也不返回任何内容。在类型方面,它们是等效的,但是在文档方面,它们是不同的。第一个是方法,其中第二个是作为函数的属性,它暗示它已经具有绑定的this,而第一个则没有。

在像element.onclick = props.handleChange这样的无点上下文中使用时,第一个指示用法应该是element.onclick = props.handleChange.bind(props),因为这是一种方法,而适当的this很重要。第二个表明只写element.onclick = props.handleChange很好,因为它是函数而不是方法。

答案 1 :(得分:0)

两者相似。他们只是强制转换到undefined

在第一个代码示例中,您要先调用function,然后指示它返回void。

在第二个代码示例中,您正在定义一种使用typecast的方法,该方法将以一种返回返回void的函数的方式使用。

我个人喜欢定义第二个代码示例。