这些流类型定义有什么区别?
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
.但是值得注意的是,将类标记为实现接口(interface)并不是强制性的。 Flow 实现了结构子类型,所以如果你有一个类实例,你可以将它传递给期望兼容的 type
即使没有明确指出该类实现了特定的接口(interface)。
关于interface - 流接口(interface)与对象类型别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43023941/