当前位置: 首页 > news >正文

利用json-to-ts工具进行转换,放置在typeScript.ts文件中

后端,返回了 100 个字段,现在拿到的那 100 个字段里,里面还有那种深层嵌套的“对象套对象”,利用json-to-ts工具进行转换,然后前端定义后端的response这个返回对象,要怎么定义,是不是要把没有用的数据也放置在typeScript.ts文件中??

答案:以下是答案,可以参考一下;;

不要让一个接口长达几百行。把嵌套的对象拆出来:

TypeScript

// 定义底层小对象 interface Address { city: string; street: string; } // 定义中层对象 interface UserProfile { id: number; name: string; address: Address; // 引用上面的定义 } // 定义最终的 Response export interface FinalResponse { code: number; data: UserProfile; }
第二步:批量删除“干扰项”

types.ts中,直接删掉工具生成的那些诸如create_time,update_user,is_deleted,ext_field_1等后端数据库字段。只要你的代码里不调用data.create_time,删掉它对程序运行没有任何影响。

第三步:标记可选字段?

后端有些字段可能有时返回、有时不返回。对于这些不确定的深层数据,记得加上?

TypeScript

interface NestedInfo { coupon_detail?: any; // 如果不显示,直接用 any 并设为可选 }

要把这种复杂的 JSON 数据解析到前端页面并转化为 TypeScript,最优雅的做法是定义接口 (Interface)

TypeScript 的核心优势就是类型约束。通过定义接口,你可以在编写代码时获得精准的自动补全,并防止因为拼错字段名(比如把total写成tolal)导致的 Bug。


第一步:定义 TypeScript 接口 (Interface)

根据你提供的 JSON 结构,我们需要定义一套嵌套的接口。你可以把这段代码放在一个名为types.ts的文件中:

TypeScript

// 1. 定义单条搜索结果的结构 interface ResultVo { id: string; title: string; description: string; url: string; author: string; pic_list: string[]; comment_count: number; view_count: number; // 根据 JSON 结构,这里还可以继续添加更多字段 } // 2. 定义整体返回的数据结构 interface CsdnSearchResponse { code: number; message: string; total: number; result_vos: ResultVo[]; split_words: string[]; tag_lists: string[]; }

第二步:在前端请求中应用类型

假设你在使用axios或原生的fetch来获取数据,你可以直接将接口挂载到请求函数上。

使用 Axios (推荐)

TypeScript

import axios from 'axios'; async function getSearchData() { // 泛型约束:告诉 axios 返回的数据符合 CsdnSearchResponse 结构 const response = await axios.get<CsdnSearchResponse>('/api/search'); // 现在,当你输入 response.data. 时,编辑器会自动提示 result_vos console.log(response.data.total); return response.data.result_vos; }
使用 Fetch API

TypeScript

async function fetchSearchData(): Promise<CsdnSearchResponse> { const res = await fetch('/api/search'); const data: CsdnSearchResponse = await res.json(); return data; }

如果你的 JSON 数据非常庞大(比如有几百个字段),手动写接口简直是折磨。我推荐你一个小妙招:

  1. 复制你的完整 JSON 内容。

  2. 在 VS Code 中搜索并安装插件"JSON to TS"

  3. 按快捷键Ctrl+Shift+Alt+V,它会自动根据你剪贴板的内容生成完美的 TypeScript 接口定义。

JSON 里的某些字段可能是null或者可选的。建议在定义接口时,对于不确定的字段加上?,例如pic_list?: string[];,这样在数据缺失时程序也不会报错。

http://www.jsqmd.com/news/599790/

相关文章:

  • 网络通信三表解析:ARP、MAC与路由表实战指南
  • 30B 脉冲分裂手术报告
  • SEO_从零开始构建可持续的SEO优化体系(468 )
  • CSS如何实现背景颜色的棋盘格分布_利用repeating-gradient
  • CSS如何制作透明度渐变的蒙版_使用linear-gradient从黑色过渡到透明
  • SecGPT-14B知识库增强:让OpenClaw支持最新CVE漏洞库
  • 嵌入式开发中的模块化设计实践与优势
  • 别再傻傻分不清!ESP32-S3上USB CDC、UART0和板载CH340到底谁在干活?
  • 基于Zigbee的智能果园灌溉系统设计与实现
  • OpenClaw可视化:用Chainlit监控SecGPT-14B的实时安全分析
  • AS717芯片,typec转DP 8k单转方案,AS717芯片代理
  • seo外包公司报价高的原因是什么_如何比较不同seo外包公司的报价
  • 如何解决SQL子查询阻塞问题_锁定机制与优化策略
  • 嵌入式开发中的抽象工厂模式实践
  • 动态规划:从贝尔曼的智慧到算法竞赛的基石
  • 为何要进行地暖清洗,清洗地暖的最佳时间是什么时候?4大水质问题:微生物、腐蚀、水垢、杂质 。化学清洗、射流清洗、脉冲清洗、射弹清洗和最新微泡清洗
  • 2026心血管功能测试诊断仪权威品牌TOP5推荐 - 优质品牌商家
  • 昆明电力管供应商哪家强
  • Cursor Pro功能解锁工具:突破AI编程助手限制的完整解决方案
  • 中小微企业私域引流问答流量服务推荐指南 - 优质品牌商家
  • 2026年商务场景中央空调回收公司TOP5推荐 - 优质品牌商家
  • 避坑!这些毕设太好抄了,3000+毕设案例推荐第1023期
  • 今天我们来聊一聊木质拼装玩具有哪些好处?
  • 保姆级教程:在QGC 4.0.0地面站顶部工具栏添加自定义按钮(QML实战)
  • 智能开门柜自动售货机哪里生产
  • Alertmanager介绍
  • 【游记】常熟
  • 如何在5分钟内将你的电脑变身为智能语音助手:py-xiaozhi完整配置指南
  • 船舶平衡监控系统设计与实现
  • 鸿蒙UI阴影效果避坑指南:智能取色与fill属性的正确用法