Deklaracje interface
i wydają się robić to samo. Kiedy używasz jednego nad drugim?Kiedy używasz interfejsu zamiast aliasu typu w przepływie?
type Fooable = {
foo(): string
}
vs
interface Fooable {
foo(): string
}
Deklaracje interface
i wydają się robić to samo. Kiedy używasz jednego nad drugim?Kiedy używasz interfejsu zamiast aliasu typu w przepływie?
type Fooable = {
foo(): string
}
vs
interface Fooable {
foo(): string
}
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:
Mam nadzieję, że to pomoże!
dobra odpowiedź, dziękuję! – vitorbal
Czy możesz rozwinąć na tym: 'To pozwala podtypy być kowariantne w.r.t. metody "? – CMCDragonkai