是否可以让 Flow 验证器检查 react setState 中的 immutability-helper 更新语法?

Is it possible to make Flow validator check immutability-helper update syntax in reacts setState?

我正在使用 flow with Visual Studio Code integrated with vscode-flow-ide plugin . Immutability update method comes from immutability-helper。 是否可以让 Flow 验证器检查 ::update 方法语法是否存在您的状态类型定义的错误。

示例:

type State = {
    validTitle: boolean,
    post: {
        featured: boolean
    }
};
this.setState({
    validTitle: false,
    post: update(this.state.post, {
        featured: { $set: "" }
    })
});

像 "validTitle" 属性 这样的每个简单状态更新都将被正确验证,但 ::update 方法调用将因其声明而被跳过:

update<any, never>(target: any, spec: Spec<any, never>): any

所以我的问题是: 有没有办法强制 Flow 查找更新方法语法中的错误,并且在我的示例中发现 "featured" 属性 被设置为无效值?

很遗憾,目前还没有这样的方式。

我已经开始考虑编写自己的包装函数来检查中间的类型,但后来我意识到回退到对数组 [...array] 使用 Object.assign 和展开运算符是公平的,很容易保持状态不变性。

当然,使用这种方法,流程验证器会通知您不正确的值分配。