Redux示例todo app有这样的todo reducer:
https://github.com/reactjs/redux/blob/master/examples/todos/src/reducers/todos.js#L23
ADD_TODO操作无状态,但TOGGLE_TODO需要状态。如何在不编辑代码的情况下为编写简化器的流式类型?
答案 0 :(得分:1)
我不确定你的意思是什么"没有编辑代码本身。"您需要在某些地方添加类型注释以便Flow来检查您的代码。无论如何,这是我为你的例子提出的类型:
type Action = {
type: 'ADD_TODO',
id: number,
text: string,
} | {
type: 'TOGGLE_TODO',
id: number,
};
type State = {
id: number,
completed: boolean,
}
这里是完整的tryflow。我不认为有任何好的方式向Flow表达,当undefined
为todo
时,您只会将action.type
传递给ADD_TODO
。最好在某种程度上重构代码。
请记住,Flow不是灵丹妙药。它是一个很好的工具,可以防止错误并使开发更容易,但作为静态检查的回报,你必须放弃一些它无法理解的模式。您会发现,您经常需要围绕Flow可以理解的方式构建代码(顺便说一下,我相信这会导致更好的设计选择,并使人们更容易理解)。类型安全不是免费的,这是所有类型检查员的基本限制。所以,不要期望它能够在没有你的情况下检查所有内容并编辑代码本身。"