React组件两种事件声明方式的差异:仅风格不同吗?
React组件Props中两种事件声明的区别
在TypeScript里,你给出的两种onClick声明方式,大部分场景下只是风格差异,但存在一些细微的类型层面区别:
语法风格不同
onClick: () => void是把onClick当作接口的一个属性,类型定义为无参无返回值的函数。onClick(): void是直接定义接口的一个方法,语法上更贴近类的方法声明。
类型兼容性的细微差异
- 方法式声明(
onClick(): void)会隐式绑定this类型到接口实例,但在React函数组件的Props场景里,onClick作为回调函数一般不会用到this,所以这个差异基本不会影响实际使用。 - 在接口继承、类型重写的场景下,两种写法的类型检查规则略有不同,但同样,React组件Props的使用场景很少涉及这类情况。
- 方法式声明(
React组件中的实际表现
- 不管用哪种方式定义,调用组件时传入的
onClick回调函数完全通用,编译后的JavaScript代码也没有区别——因为TypeScript接口只是编译时类型检查,不会出现在最终产物里。
- 不管用哪种方式定义,调用组件时传入的
总结:在React组件开发中,这两种写法几乎不会带来功能上的差异,选哪种主要看团队的代码风格约定。
内容的提问来源于stack exchange,提问作者Jan Aagaard
相关产品推荐
相关产品推荐

