2016-04-28 69 views

回答

30

这是一个很大的问题。理想情况下,接口和对象类型之间没有区别。正如所实施的那样,它们之间有一些(往往是细微的)差异。

最大的区别在于Flow认为在接口上声明的方法是“只读”的。这允许亚型是协变w.r.t.方法,这是一种带有继承层次结构的非常常见的模式。

随着时间的推移,我希望看到流量统一这些概念,但在那之前,这里是我的经验法则为接口和对象类型之间进行选择:

  • 使用对象类型来描述大多是数据包在你的应用中传递过来,例如,React组件的道具/状态,Flux/Redux动作,类似JSON的东西。
  • 使用接口来描述类似服务的接口。通常这些主要是方法,例如,Rx.Observable/Observer,Flux/Redux存储,抽象接口。如果一个类实例可能是你的类型的居民,你可能需要一个接口。

希望这有助于!

+0

不错的答案,谢谢! – vitorbal

+0

你可以扩展这个:'这允许亚型是协变w.r.t. methods'? – CMCDragonkai

相关问题