我正在定义一个具有确切形状的State
类型:
type State = {| someString: string, someNumber: number |};
我的初始状态符合这个定义:
const initialState : State = {
someString: 'hey',
someNumber: 1,
};
创建获取状态并返回其修改后的副本的函数不会:
function doStuff (state : State) : State {
return {
...state,
someNumber: 2,
};
}
src/flowTest.js:10 10: return {
^ object literal. Inexact type is incompatible with exact type
9: function doStuff (state : State) : State {
^^^^^ exact type: object type
这种流程是不是理解解构还是我遗漏了什么?我注意到将类型定义更改为非严格(删除括号括号)将使此代码通过。但是我试图阻止任何拼写错误。
谢谢!
答案 0 :(得分:4)
Flow目前对对象传播的支持有点缺乏,而Exact对象语法也相对较新。在这种情况下,https://github.com/facebook/flow/issues/2405似乎是您遇到的问题。