Flowtype - 制作一个密封的空物体

时间:2017-06-06 20:12:46

标签: flowtype

Flow的文档说:When you create an object without any properties, you create an unsealed object type in Flow.是否可以创建没有属性的密封对象?

我的用例如下。我想将state初始化为空对象,并给状态以下类型:

type EmployeesViewState = {|
  employeesRequest?: Request<Array<Employee>>,
  geosRequest?: Request<Array<Geo>>,
|};

我尝试分配空对象时得到的错误是

 33:   state: EmployeesViewState = {};
                                   ^^ object literal. Inexact type is incompatible with exact type
 33:   state: EmployeesViewState = {};
              ^^^^^^^^^^^^^^^^^^ exact type: object type

当然,由于我还没有提供请求,我无法分配它们。我也不能将undefined分配给对象,因为状态是用管道定义的,即它是一个确切的类型。

我可以通过说const a: any = {}; state = a;来欺骗流程,但这看起来真的很糟糕。还有其他方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:5)

这肯定是Flow's's之一。但是,它有一个相当简单的解决方法。只需将您的对象传递给Object.freeze

Object.freeze({})

当然,这只有在你不能改变它的情况下才有效,但我发现在这种情况下,我很少想要这样做。