使用流相交两种类型的正确方法

问题描述 投票:0回答:1

我最近了解了如何在流中相交类型。我很好奇有什么区别以下两种相交的两种对象类型的方法之间:

说我有以下两种类型相交。

type A = {
   foo: string
}

type B = {
   bar: bool
}

方法1:

type C = A & B

方法2:

type C = {...A, ...B}

这些方法等效吗?

types flowtype
1个回答
0
投票

不,它们不相同。

[起初,我想不出&有用的情况(因为它坏了)。我建议始终使用点差。

basic difference:扩展名使所有属性都是可选的(如果您的类型不精确)。您可以使用can实用程序修复它。

正确的做法是将所有类型都声明为精确类型。 Flow具有为此的配置选项,将来也会有$Exact。但是will become a default behavior &具有精确的类型,而传播却可以。

交集的结果是does not workoftena类型。

© www.soinside.com 2019 - 2024. All rights reserved.