【发布时间】:2020-08-29 23:48:36
【问题描述】:
我正在获取一些包含元数据字段的数据,我想将其删除。我想到了这样的类型变量:
type MainRecord = {
id: string
fieldOne: string
related: RelatedRecord[]
__typename: string
}
type RelatedRecord = {
id: string
fieldTwo: string
__typename: string
}
我正在使用 Formik 更新记录,但我不希望在为表单创建初始值时包含 __typename 字段,因为尝试将包含元数据的数据发送到服务器会导致语法错误当我这样做时的查询。我对 Formik 表单有单独的类型,如下所示:
type MainFields = {
id: string
fieldOne: string
related: RelatedFields[]
}
type RelatedFields = {
id: string
fieldTwo: string
}
我的解决方案是尝试将MainRecord 数据转换为MainFields 对象,这似乎可以正常工作,因为fields.__typename 不是有效属性,fields.related[0].__typename 也不是。
const record: MainRecord = {
id: "10",
fieldOne: "Foo",
__typename: "Main",
related: [
{
id: "20",
fieldTwo: "Bar",
__typename: "Related"
},
{
id: "21",
fieldTwo: "Baz",
__typename: "Related"
},
]
}
const fields: MainFields = record // or "as MainFields"
但是,当您记录 fields 变量时,元数据仍然存在并且不应该存在。
console.log("fields: ", fields);
我想我可以手动以编程方式去除它们,但必须有更好的方法。有任何想法吗?我确定有一种打字稿方式可以完成此任务,但我只是不知道。
【问题讨论】:
-
medium.com/poka-techblog/… - 过滤或映射或链接两者。
标签: typescript