gpt4 book ai didi

javascript - 将流类型 SuperType 的对象分配给 SubType 会导致错误

转载 作者:行者123 更新时间:2023-11-30 19:24:26 27 4
gpt4 key购买 nike

我的印象是,可以为 Flow 中的不精确对象类型提供一个具有未在该类型中声明的属性的对象,只要该类型中声明的所有属性都存在即可。

Flow 中不准确的对象类型声明表示“对象可以具有这些属性中的任何一个,以及任何未指定的属性”。因此,一个 SubType 类型的对象应该能够被分配一个 SuperType 类型的对象并且仍然有效。

我在这里错过了什么?

我相信它与嵌套对象类型有关,但如果我不能修改 genericPlan (SubType) 上未声明的属性,那它又有什么关系呢?

/* @flow */
type SuperType = {
plan: {
id: string,
location: {
id: string,
team: {
id: string,
},
},
},
};

type SubType = {
plan: {
id: string,
location: {
id: string,
},
},
};

const planWithTeam: SuperType = {
plan: {
id: '',
location: {
id: '',
team: {
id: '',
},
},
},
};

// The following throws this error:
// Cannot assign planWithTeam to genericPlan because property team is
// missing in SubType [1] but exists in SuperType [2] in property plan.location.
const genericPlan: SubType = planWithTeam;

最佳答案

不,nested object props are invariant by default .要进行协变,只需添加一个加号:

type SubType = {
+plan: {
id: string,
+location: {
id: string,
},
},
};

Try

关于javascript - 将流类型 SuperType 的对象分配给 SubType 会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57067162/

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