interface - 流接口(interface)与对象类型别名

标签 interface flowtype

这些流类型定义有什么区别?

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/

相关文章:

java - 在 Erlang 中使用 Dialyzer 的行为来模拟接口(interface)

javascript - 如何使用 Flow 解决 Untyped 模块错误?

javascript - Flow : "?() => void" 这个问号是什么意思

javascript - 在 Flow.js 中键入常量的子集而不重复

javascript - 有什么理由在 Flow 中使用可选 props 吗?

oop - 如何在 Go 中实现一个抽象类?

oop - 抽象类、接口(interface)、mixins

java - 如何使用 Java 8 中的自定义比较器接口(interface)对对象数组进行排序?

typescript - 如何按照 typescript 中的定义在流中定义映射类型

c# - 确定最接近类的子接口(interface)