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