[英]Typescript - How to create nested interface for json object
I am trying to create nested json object for which I have created Interface.I am getting error as Type of property serservicesAndHeads are incompatible
and says Property is missing
. 我正在尝试创建我已创建Interface的嵌套json对象。我收到错误,因为
Type of property serservicesAndHeads are incompatible
并且表示Property is missing
。 My Interface is as follows: 我的界面如下:
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[];
}
Where my json looks like this: 我的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' }
]
}
]
}
I have tried this as well for nesting of serviceAndHead 我也尝试过这样做来嵌套serviceAndHead
servicesAndHeads?: {
[key: string]:ServicesAndHead,
majorHeads?: {
[key: string]:MajorHead
};
};
How would I rectify my code to accept the said json. 我如何纠正我的代码以接受所述json。
Define Interfaces as below: 定义接口如下:
interface Head {
majorHeadNumber?: string;
majorHeadDescription?: string;
};
interface ServicesAndHead {
majorService?: string;
subMajorService?: string;
majorHead: Head[];
}
export interface MyTableItem {
demandNo?: string;
demandName?: string;
servicesAndHeads?:ServicesAndHead[];
}
This will be compatible with your Json object. 这将与您的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'
}]
}]
}
The ServicesAndHead
interface defines the servicesAndHeads
property as mandatory but both dataItem.servicesAndHeads
's array elements lack this property. ServicesAndHead
接口将servicesAndHeads
属性定义为必需属性,但dataItem.servicesAndHeads
的数组元素都缺少此属性。 They feature majorHead
property instead. 它们具有
majorHead
属性。 Perhaps, you meant 或许,你的意思
interface ServicesAndHead {
majorService?: string;
subMajorService?: string;
majorHead: Head[];
}
If so, you also need to adjust the Head
interface as follows: 如果是这样,您还需要调整
Head
界面,如下所示:
interface Head {
majorHeadNumber?: string;
majorHeadDescription?: string;
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.