我是一个typescript
(以及js
)新手,并且被一系列作者的建模所困。
如果author
属性的值是一个数组对象,我需要:
1.允许这些对象具有个人名称属性(family/given),或者简单地“name”(对于组织等)。
1.允许一个可选的“位置”属性(对于发布者和组织作者)。
1.使用typescript-json-schema
自动导出到JSON Schema,并加载JSON并使其正确类型化,这样我就可以获得关联的方法。
我可以在Reference
类上这样做:
@Type(() => Agent, {
discriminator: {
property: 'type',
subTypes: [
{ value: Organization, name: 'organization' },
{ value: Person, name: 'person' },
],
},
})
author?: (Organization|Person)[];
......这是可行的:
Reference {
id: "un",
type: "article",
author: [ Organization { name: "United Nations" } ],
title: "The Title",
issued: "2020"
}
但是它有一个限制,它迫使我在JSON输入数据中包含一个type
属性来进行区分,如果可能的话,我宁愿避免这种情况。毕竟,我知道如果有familyname
属性,它就是Person
。
还有更好的选择吗?
1条答案
按热度按时间1mrurvl11#
如果我理解正确的话,你正在尝试将TypeScript对象导出到JSON文件/对象中。如果是这样的话,你可以使用JSON。stringify()方法它将作为参数给出的对象或列表转换为JSON字符串,然后您可以根据需要保存到文件中。为了导入文件/对象,您可以使用JSON。parse()返回一个对象。默认情况下,这个对象是any,所以你需要实现一个方法来检查它的类型。这个link可以帮助你实现它。