我最近了解了如何在流中相交类型。我很好奇有什么区别以下两种相交的两种对象类型的方法之间:
说我有以下两种类型相交。
type A = {
foo: string
}
type B = {
bar: bool
}
方法1:
type C = A & B
方法2:
type C = {...A, ...B}
这些方法等效吗?
不,它们不相同。
[起初,我想不出&
有用的情况(因为它坏了)。我建议始终使用点差。
basic difference:扩展名使所有属性都是可选的(如果您的类型不精确)。您可以使用can实用程序修复它。
正确的做法是将所有类型都声明为精确类型。 Flow具有为此的配置选项,将来也会有$Exact
。但是will become a default behavior &
具有精确的类型,而传播却可以。
交集的结果是does not workoftena类型。