gpt4 book ai didi

javascript - 流动接头类型和可选属性

转载 作者:行者123 更新时间:2023-11-28 04:09:31 25 4
gpt4 key购买 nike

我刚刚遇到了一个令我困惑的流程问题。有人可以向我解释为什么以下不起作用,以及我将如何修复它吗?

// @flow

type MessageDescriptor = {
id: string,
defaultMessage?: string,
description?: string
};

type MenuLabel = MessageDescriptor & {
+values?: { +[name: string]: string }
};

const msg: MessageDescriptor = {
id: 'test'
};

const label: MenuLabel = msg;

我得到的错误是:

9: type MenuLabel = MessageDescriptor & {                                        
^ property `values`. Property not found in

17: const label: MenuLabel = msg;
^ object type

但是,values 显然是可选的。更奇怪的是,以下内容有效:

const label: MenuLabel = { ...msg };

最佳答案

看起来要使“交叉点类型+可选”起作用,您必须在两种类型中定义可选值。

// @flow

type MessageDescriptor = {
id: string,
defaultMessage?: string,
description?: string,
+values?: { +[name: string]: string }
};


type MenuLabel = MessageDescriptor & {
+values?: { +[name: string]: string }
};

const msg: MessageDescriptor = {
id: 'test'
};

const label: MenuLabel = msg;

鉴于评论,也许您正在寻找联合类型而不是交集类型?

// @flow

type MessageDescriptor = {
id: string,
defaultMessage?: string,
description?: string,
};


type MenuLabel = MessageDescriptor | {
+values?: { +[name: string]: string }
};

const msg: MessageDescriptor = {
id: 'test'
};

const label: MenuLabel = msg;

关于javascript - 流动接头类型和可选属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46421447/

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