何时在带有React的Typescript中使用私有/受保护的方法

时间:2018-11-05 11:07:04

标签: reactjs typescript access-modifiers

我目前正在使用Typescript开发 React 应用程序。当组件应提供带有引用的功能时,通常使用 public 方法(public focus() : void {...}),但我无法确定组件的方法何时应为 private 受保护的时。

我知道私有成员和受保护成员都可以从已转译的代码访问,因此在执行过程中可访问性基本上是相同的。所以我的问题是:作为最佳实践(写一个React组件),哪些方法应该标记为私有/受保护,为什么(事件处理程序,自定义处理程序,组件逻辑等)?

1 个答案:

答案 0 :(得分:2)

这取决于开发人员的偏好。

所有应该公开使用的成员(包括生命周期挂钩)都可以设为public,例如一种旨在通过React ref在外部调用的方法。根据{{​​3}},其余的可以做成protectedprivate。这适用于任何类,而不仅仅是React。选择可能取决于某个类是在内部使用还是作为库的一部分发布,可以根据当前需求轻松重构内部类,而对库的过度封装将使用户丧失用户可以从公共API中受益的方法

使用private会阻止类的有效扩展。这在React中可能不是什么大问题,因为它提升了the principle of least privilege

privateprotected之间的选择是一个品味问题,基本上是精心封装和抢先可扩展性之间的选择。 protected的使用更为合理,因为它提供了实际的好处,而缺点却很少。