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;
来欺骗流程,但这看起来真的很糟糕。还有其他方法可以解决这个问题吗?
答案 0 :(得分:5)
这肯定是Flow's's之一。但是,它有一个相当简单的解决方法。只需将您的对象传递给Object.freeze
:
Object.freeze({})
当然,这只有在你不能改变它的情况下才有效,但我发现在这种情况下,我很少想要这样做。