2016-04-28 82 views

回答

30

這是一個很大的問題。理想情況下,接口和對象類型之間沒有區別。正如所實施的那樣,它們之間有一些(往往是細微的)差異。

最大的區別在於Flow認爲在接口上聲明的方法是「只讀」的。這允許亞型是協變w.r.t.方法,這是一種帶有繼承層次結構的非常常見的模式。

隨着時間的推移,我希望看到流量統一這些概念,但在那之前,這裏是我的經驗法則爲接口和對象類型之間進行選擇:

  • 使用對象類型來描述大多是數據包在你的應用中傳遞過來,例如,React組件的道具/狀態,Flux/Redux動作,類似JSON的東西。
  • 使用接口來描述類似服務的接口。通常這些主要是方法,例如,Rx.Observable/Observer,Flux/Redux存儲,抽象接口。如果一個類實例可能是你的類型的居民,你可能需要一個接口。

希望這有助於!

+0

不錯的答案,謝謝! – vitorbal

+0

你可以擴展這個:'這允許亞型是協變w.r.t. methods'? – CMCDragonkai

相關問題