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;
但这看起来真的很老套。还有其他方法可以解决这个问题吗?
这无疑是 Flow 的弱点之一。然而,它有一个相当简单的解决方法。只需将你的对象传递过去即可Object.freeze
:
Object.freeze({})
当然,这只有在你不打算改变它的情况下才有效,但我发现在这种情况下我很少想要这样做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)