You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript创建适配嵌套JSON的接口:解决类型不兼容问题

解决TypeScript接口与嵌套JSON不兼容的问题

咱们先拆解下你遇到的问题根源:你的JSON数据和TypeScript接口完全对不上,主要有这几个核心矛盾:

  • JSON里的servicesAndHeads是数组类型,但你原接口里定义成了单个ServicesAndHead对象
  • 内层嵌套的数组属性名是majorHead,但你接口里写的是servicesAndHeads,而且字段名也不匹配(比如JSON里是majorHeadNumber,接口里是HeadNumber)

直接调整接口结构就能完美适配你的JSON,来看修正后的完整代码:

// 最内层的majorHead对象接口,完全匹配JSON里的字段
interface MajorHead {
  majorHeadNumber?: string;
  majorHeadDescription?: string;
}

// 对应servicesAndHeads数组里的每一项
interface ServicesAndHead {
  majorService?: string;
  subMajorService?: string;
  majorHead?: MajorHead[]; // 这里改成和JSON一致的属性名
}

// 顶层接口,servicesAndHeads定义为数组类型
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' }
      ]
    }
  ]
};

关键修改说明:

  1. 字段名完全对齐:把原来的Head接口改名为MajorHead,属性名和JSON里的majorHeadNumber、majorHeadDescription一一对应
  2. 数组类型修正:ServicesAndHead里的嵌套数组属性名改为majorHead,类型是MajorHead[];同时MyTableItem里的servicesAndHeads定义为ServicesAndHead[],因为你的JSON里这部分是数组
  3. 去掉不必要的索引签名:你之前尝试的{ [key: string]: ... }写法完全没必要,因为你的JSON结构是固定的,用明确的接口定义更清晰也更安全

内容的提问来源于stack exchange,提问作者Iswar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:57:19