2016-04-28 12 views

Odpowiedz

30

To jest wielkie pytanie. Idealnie nie byłoby różnicy między interfejsem a typem obiektu. Wdrażane, istnieje garść (często subtelnych) różnic między nimi.

Największa różnica polega na tym, że Flow uważa metody zadeklarowane w interfejsie za "tylko do odczytu". Dzięki temu podtypy mogą być kowariancyjne w.r.t. metody, które są bardzo powszechnym wzorcem z hierarchiami dziedziczenia.

W czasie, chciałbym zobaczyć przepływu ujednolicenie tych pojęć, ale do tego czasu oto moja zasada wyboru między interfejsami i typów obiektów:

  • Użyj typów obiektów do opisania worki przeważnie danych, które są przekazywane w Twojej aplikacji, np. rekwizyty/stan dla komponentów React, akcje Flux/Redux, rzeczy podobne do JSON.
  • Użyj interfejsów, aby opisać interfejsy podobne do usług. Zwykle są to głównie metody, np. Magazyny Rx.Observable/Observer, Flux/Redux, abstrakcyjne interfejsy. Jeśli instancja klasy prawdopodobnie jest mieszkańcem Twojego typu, prawdopodobnie potrzebujesz interfejsu.

Mam nadzieję, że to pomoże!

+0

dobra odpowiedź, dziękuję! – vitorbal

+0

Czy możesz rozwinąć na tym: 'To pozwala podtypy być kowariantne w.r.t. metody "? – CMCDragonkai

Powiązane problemy