19
interface
和type
聲明似乎做同樣的事情。你什麼時候使用一個?什麼時候使用流中的類型別名接口?
type Fooable = {
foo(): string
}
VS
interface Fooable {
foo(): string
}
interface
和type
聲明似乎做同樣的事情。你什麼時候使用一個?什麼時候使用流中的類型別名接口?
type Fooable = {
foo(): string
}
VS
interface Fooable {
foo(): string
}
這是一個很大的問題。理想情況下,接口和對象類型之間沒有區別。正如所實施的那樣,它們之間有一些(往往是細微的)差異。
最大的區別在於Flow認爲在接口上聲明的方法是「只讀」的。這允許亞型是協變w.r.t.方法,這是一種帶有繼承層次結構的非常常見的模式。
隨着時間的推移,我希望看到流量統一這些概念,但在那之前,這裏是我的經驗法則爲接口和對象類型之間進行選擇:
希望這有助於!
不錯的答案,謝謝! – vitorbal
你可以擴展這個:'這允許亞型是協變w.r.t. methods'? – CMCDragonkai