javascript - 如何在 Flow 中使用(或模拟)具有覆盖字段的对象传播?

标签 javascript typescript flowtype

这不会在“尝试流程”上编译:

/* @flow */

type A = { a: number, b: string};
type B = { a: string, b: string };

const x: A = { a:1, b:'2' };
const y: B = { ...x, a: x.a.toString() }

错误是:

const y: B = { ...x, a: x.a.toString() }
                ^ Cannot assign object literal to `y` because number [1] is incompatible with string [2] in property `a`.

    References:

    3: type A = { a: number, b: string};
                     ^ [1]

    4: type B = { a: string, b: string };
                     ^ [2]

请注意,此代码在 TypeScript 中有效(当我删除字段覆盖时,它无法按预期进行编译)。

如何在不枚举原始对象的所有字段的情况下在 Flow 中实现相同的行为?

最佳答案

计划于下周发布的 Flow v0.111.0 对点差进行了一些重大改进。此代码段现在将进行类型检查。您现在可以在 flow.org/try 中看到它的运行情况。通过切换到“主”版本。

关于javascript - 如何在 Flow 中使用(或模拟)具有覆盖字段的对象传播?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52924531/

相关文章:

typescript - 类型 'value' 上不存在属性 'IDBCursor'

javascript - d3 v4 TypeScript DefinitelyTyped Angular2 线与 X 轴上的 ScaleTime

javascript - 如何创建具有现有类型的所有属性但可选的新流类型

javascript - Flow 的 libdef 中 $Export 变量的含义是什么?

recursion - 在 FlowJS 中递归创建只读对象

javascript - getJSON 和 servlet 通信错误

javascript - Axios Http 客户端 - 如何使用表单参数构造 Http Post url

sql-server - 未使用 TypeScript 和 mssql NodeJS 包执行准备好的语句

javascript - jquery/javascript 隐藏除 div 及其子项之外的所有内容

javascript - 防止 body 在鼠标滚轮上滚动,但不是文本区域