6
這些流體類型定義之間有什麼區別?流體界面與類型
interface Vehicle {
start(): void,
stop(): void
}
type Vehicle = {
start(): void,
stop(): void
};
據我所知,他們可以用同樣的方式。
這些流體類型定義之間有什麼區別?流體界面與類型
interface Vehicle {
start(): void,
stop(): void
}
type Vehicle = {
start(): void,
stop(): void
};
據我所知,他們可以用同樣的方式。
interface
s和type
s是相似的,並且差異大多是歷史我相信。最近執行property variance的更改也使type
的行爲更符合interface
的行爲。我相信目標是最終使它們相同,甚至可能刪除interface
。
可能仍然存在細微差別,但對於大多數用途,我不認爲您會注意到不同之處。
一個主要的區別是,如果你想使用implements
(例如class Foo implements Bar {...}
)然後Bar
必須是interface
- 不是type
。但值得注意的是,將類標記爲實現接口並不是強制性的。 Flow實現了結構化子類型化,所以如果你有一個類實例,你可以將它傳遞給一個兼容的應用程序,即使沒有明確指出這個類實現了一個特定的接口。