gpt4 book ai didi

flowtype - Flow 中的对象扩展运算符

转载 作者:行者123 更新时间:2023-12-04 16:58:35 25 4
gpt4 key购买 nike

我想复制一个对象,同时只更改一个属性。如果没有 Flow,我可以像这样使用对象扩展运算符来做到这一点:

class Point { x: number = 10; y: number = 10; }
const p1 = new Point();
const p2 = {...p1, y: 5};

但是当我像这样向 p1 和 p2 添加类型注释时:
const p1 = new Point();
const p2 = {...p1, y: 5};

我收到以下错误:
 11: const p2:Point = {...p1, y: 5};
^^^^^^^^^^^^^ object literal. This type is incompatible with
11: const p2:Point = {...p1, y: 5};
^^^^^ Point

我将如何在 Flow 中以类型安全的方式实现这种类型的操作?

例如,在 Elm 中,我可以这样做:
p2 = { p1 | y = 5 }

Flow 中必须有一些等价物。

最佳答案

当您使用对象扩展时,您不会获得对象的精确副本。相反,您会得到一个复制了所有源对象属性的普通对象。所以,Flow 就在这里,p2不是 Point .试试这个:

type Point = { x: number, y: number };
const p1: Point = { x: 10, y: 10 };
const p2: Point = { ...p1, y: 5 };

关于flowtype - Flow 中的对象扩展运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40032532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com