Typescript - 如何为 json 对象创建嵌套接口
Typescript - How to create nested interface for json object
我正在尝试创建我已为其创建 Interface.I 的嵌套 json 对象,但出现 Type of property serservicesAndHeads are incompatible
错误并显示 Property is missing
。我的界面如下:
interface Head {
HeadNumber?: string;
HeadDescription?: string;
};
interface ServicesAndHead {
majorService?: string;
subMajorService?: string;
servicesAndHeads:Head[];
}
export interface MyTableItem {
demandNo?: string;
demandName?: string;
servicesAndHeads?:ServicesAndHead;
//servicesAndHeads?:ServicesAndHead[];
}
我的 json 看起来像这样:
const dataItem: MyTableItem =
{
demandNo: 'Demand Number 2',
demandName: 'Animal Husbandary, Livestock, Fisheries and Veterinary Services',
servicesAndHeads: [
{
majorService: 'C-Economic Service',
subMajorService: '(a) Agriculture and Allied Activities',
majorHead: [
{ majorHeadNumber: '3098', majorHeadDescription: 'Animal Husbandry' },
{ majorHeadNumber: '3999', majorHeadDescription: 'Diary Development' },
{ majorHeadNumber: '4902', majorHeadDescription: 'Fisheries' }
]
},
{
majorService: 'C- Capital Account of Economic Services',
subMajorService: '(a) Capital Account of Agriculture and Allied Activities',
majorHead: [
{ majorHeadNumber: '0012', majorHeadDescription: 'Capital Outlay on Animal ' },
{ majorHeadNumber: '3245', majorHeadDescription: 'Capital Outlay on Fisheries' }
]
}
]
}
我也尝试过嵌套 serviceAndHead
servicesAndHeads?: {
[key: string]:ServicesAndHead,
majorHeads?: {
[key: string]:MajorHead
};
};
我将如何纠正我的代码以接受所述 json。
定义接口如下:
interface Head {
majorHeadNumber?: string;
majorHeadDescription?: string;
};
interface ServicesAndHead {
majorService?: string;
subMajorService?: string;
majorHead: Head[];
}
export interface MyTableItem {
demandNo?: string;
demandName?: string;
servicesAndHeads?:ServicesAndHead[];
}
这将与您的 Json 对象兼容。
const dataItem: MyTableItem = {
demandNo: 'Demand Number 2',
demandName: 'Animal Husbandary, Livestock, Fisheries and Veterinary Services',
servicesAndHeads: [
{
majorService: 'C-Economic Service',
subMajorService: '(a) Agriculture and Allied Activities',
majorHead: [
{
majorHeadNumber: '3098',
majorHeadDescription: 'Animal Husbandry'
},
{
majorHeadNumber: '3999',
majorHeadDescription: 'Diary Development'
},
{
majorHeadNumber: '4902',
majorHeadDescription: 'Fisheries'
}]
},
{
majorService: 'C- Capital Account of Economic Services',
subMajorService: '(a) Capital Account of Agriculture and Allied Activities',
majorHead: [
{
majorHeadNumber: '0012',
majorHeadDescription: 'Capital Outlay on Animal '
},
{
majorHeadNumber: '3245',
majorHeadDescription: 'Capital Outlay on Fisheries'
}]
}]
}
ServicesAndHead
接口将 servicesAndHeads
属性 定义为强制性的,但 dataItem.servicesAndHeads
的数组元素都缺少此 属性。它们的特点是 majorHead
属性。也许,你的意思是
interface ServicesAndHead {
majorService?: string;
subMajorService?: string;
majorHead: Head[];
}
如果是这样,还需要调整Head
界面如下:
interface Head {
majorHeadNumber?: string;
majorHeadDescription?: string;
};
我正在尝试创建我已为其创建 Interface.I 的嵌套 json 对象,但出现 Type of property serservicesAndHeads are incompatible
错误并显示 Property is missing
。我的界面如下:
interface Head {
HeadNumber?: string;
HeadDescription?: string;
};
interface ServicesAndHead {
majorService?: string;
subMajorService?: string;
servicesAndHeads:Head[];
}
export interface MyTableItem {
demandNo?: string;
demandName?: string;
servicesAndHeads?:ServicesAndHead;
//servicesAndHeads?:ServicesAndHead[];
}
我的 json 看起来像这样:
const dataItem: MyTableItem =
{
demandNo: 'Demand Number 2',
demandName: 'Animal Husbandary, Livestock, Fisheries and Veterinary Services',
servicesAndHeads: [
{
majorService: 'C-Economic Service',
subMajorService: '(a) Agriculture and Allied Activities',
majorHead: [
{ majorHeadNumber: '3098', majorHeadDescription: 'Animal Husbandry' },
{ majorHeadNumber: '3999', majorHeadDescription: 'Diary Development' },
{ majorHeadNumber: '4902', majorHeadDescription: 'Fisheries' }
]
},
{
majorService: 'C- Capital Account of Economic Services',
subMajorService: '(a) Capital Account of Agriculture and Allied Activities',
majorHead: [
{ majorHeadNumber: '0012', majorHeadDescription: 'Capital Outlay on Animal ' },
{ majorHeadNumber: '3245', majorHeadDescription: 'Capital Outlay on Fisheries' }
]
}
]
}
我也尝试过嵌套 serviceAndHead
servicesAndHeads?: {
[key: string]:ServicesAndHead,
majorHeads?: {
[key: string]:MajorHead
};
};
我将如何纠正我的代码以接受所述 json。
定义接口如下:
interface Head {
majorHeadNumber?: string;
majorHeadDescription?: string;
};
interface ServicesAndHead {
majorService?: string;
subMajorService?: string;
majorHead: Head[];
}
export interface MyTableItem {
demandNo?: string;
demandName?: string;
servicesAndHeads?:ServicesAndHead[];
}
这将与您的 Json 对象兼容。
const dataItem: MyTableItem = {
demandNo: 'Demand Number 2',
demandName: 'Animal Husbandary, Livestock, Fisheries and Veterinary Services',
servicesAndHeads: [
{
majorService: 'C-Economic Service',
subMajorService: '(a) Agriculture and Allied Activities',
majorHead: [
{
majorHeadNumber: '3098',
majorHeadDescription: 'Animal Husbandry'
},
{
majorHeadNumber: '3999',
majorHeadDescription: 'Diary Development'
},
{
majorHeadNumber: '4902',
majorHeadDescription: 'Fisheries'
}]
},
{
majorService: 'C- Capital Account of Economic Services',
subMajorService: '(a) Capital Account of Agriculture and Allied Activities',
majorHead: [
{
majorHeadNumber: '0012',
majorHeadDescription: 'Capital Outlay on Animal '
},
{
majorHeadNumber: '3245',
majorHeadDescription: 'Capital Outlay on Fisheries'
}]
}]
}
ServicesAndHead
接口将 servicesAndHeads
属性 定义为强制性的,但 dataItem.servicesAndHeads
的数组元素都缺少此 属性。它们的特点是 majorHead
属性。也许,你的意思是
interface ServicesAndHead {
majorService?: string;
subMajorService?: string;
majorHead: Head[];
}
如果是这样,还需要调整Head
界面如下:
interface Head {
majorHeadNumber?: string;
majorHeadDescription?: string;
};