
个人主页杨利杰YJlio❄️个人专栏《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》《超简单用Python让Excel飞起来》让复杂的事情更简单让重复的工作自动化文章目录前言别把一条工单拆散在多个数组里一、先让字段属于同一条记录二、用接口把字段类型写清楚三、对象字面量保存具体值四、只有需要创建行为时再引入类五、构造函数承担明确的初始化六、可选字段要有真实业务理由七、让函数接收完整工单对象八、模型变化要检查所有引用学习总结参考资料前言别把一条工单拆散在多个数组里大家好我是杨利杰 YJlio。标题放一个数组、状态放另一个数组刚开始看起来简单删除或排序之后一条工单的字段就可能错位。这篇我把同一条记录放进对象再用接口描述结构。这是 HarmonyOS 7.0 学习笔记第 06 篇。接口、对象和类分别解决不同问题接口表达约定对象保存具体值类可以组织创建过程与行为。接口描述数据结构不会替外部输入执行运行时校验。环境项本次记录DevEco Studio待填写SDK/API待填写工程当前 ArkTS 练习工程数据对象IT 工单摘要本文代码为学习示例配图为示意图不预先填写真实构建、诊断或运行结果。一、先让字段属于同一条记录我先确定列表需要哪些信息再把它们放进同一个工单对象。字段业务含义id工单标识title工单标题category分类status当前状态createdAt创建时刻的时间戳这样排序、筛选或传递对象时字段可以一起移动。它不会自动保证标识唯一或状态合法这些仍要靠数据层规则。二、用接口把字段类型写清楚本篇沿用命名枚举表达状态避免在多个文件散落任意字符串具体语法仍需按当前 ArkTS 工具链确认。enumTicketStatus{New0,Processing1,Resolved2}interfaceTicket{id:string;title:string;category:string;status:TicketStatus;createdAt:number;}接口让使用者知道一条记录需要哪些字段和类型。它不是某条具体工单也不能用new Ticket()创建记录。如果字段缺失或类型不匹配应查看实际诊断不要为消除错误把所有字段改成可选。接口的声明与真实业务需求应当一致。三、对象字面量保存具体值结构确定后我用带明确类型的对象字面量创建一条练习记录。constticket:Ticket{id:T-1001,title:无法连接办公网络,category:网络,status:TicketStatus.New,createdAt:Date.now()};T-1001是示例标识Date.now()取得创建时刻的时间戳。本例不提供服务器标识生成、时间同步或时区显示逻辑。图中“创建时的时间戳”是这个字段的说明没有虚构一次运行的数字。完成本机实验后再记录实际值和设备环境。四、只有需要创建行为时再引入类如果对象只是一组字段接口加对象就足够表达本篇练习需要稳定的创建规则或方法时我才考虑类。需求本篇采用的方式约定有哪些字段接口保存一条具体记录对象在创建时处理标题类的构造函数示例类也可以作为类型使用但接口不会自动产生运行时构造逻辑。不要仅为了形式统一就把每条数据都改成类实例。华为跨文件样式复用文档也展示了类通过implements实现接口的用法。这里引用它说明语法关系不把其组件样式代码当成本篇业务模型。五、构造函数承担明确的初始化下面的TicketDraft只演示两个字段的初始化与前面的完整Ticket不是同一个模型。classTicketDraft{title:string;category:string;constructor(title:string,category:string){this.titletitle.trim();this.categorycategory;}}constdraft:TicketDraftnewTicketDraft( 网络故障 ,网络);构造时只处理标题首尾空白分类保留传入值。trim()不是完整标题校验输入全是空格时处理后仍可能为空。真正保存工单前还要应用上一节的校验规则。官方ArkTS 语法适配背景说明了属性显式初始化的要求。本例在构造函数中赋值实际构建仍以当前工程为准。初始化只保证按代码赋值不等于业务数据已经校验通过。六、可选字段要有真实业务理由有的工单没有附件可以把附件名称作为可选信息标题、标识和状态是否必填则应按业务要求确定。interfaceTicketWithAttachmentextendsTicket{attachmentName?:string;}functiongetAttachmentLabel(item:TicketWithAttachment):string{returnitem.attachmentNameundefined?未提供附件名称:item.attachmentName;}这段例子处理“字段缺失”没有把空字符串自动视作缺失。如果业务禁止空附件名需要另加规则。可选字段会影响每个读取位置。增加它之前我会确认何时可以不存在以及页面、日志和存储层分别如何处理。七、让函数接收完整工单对象格式化函数接收一个Ticket比单独传几个容易顺序错位的参数更清楚。functionformatTicket(item:Ticket):string{return${item.id}|${item.title}|${item.status};}constsummary:stringformatTicket(ticket);这里沿用前面的ticket。状态是数字枚举模板字符串直接输出的是枚举数值如果页面需要“新建”等文字应增加明确的显示映射不要把数字直接当成用户文案。这段只生成文本没有接入页面列表。后续数组与渲染章节再使用同一结构避免把本篇知识点扩成完整应用。八、模型变化要检查所有引用模型新增、删除或改变字段时我会先查找接口引用再逐个处理调用点和构建诊断。在练习工程中保留接口、枚举和正常对象示例。构建后记录当前工具版本与结果。单独移除必填字段或改变字段类型记录真实诊断后恢复。增加可选附件名检查读取位置是否处理缺失值。再次构建确认练习修改没有留下错误。观察项实际记录缺失必填字段的诊断待填写字段类型不匹配的诊断待填写构造后的标题内容待填写可选字段缺失时的处理待填写恢复后构建待填写外部 JSON 即使被断言为Ticket也不会自动获得正确字段。进入程序时仍需解析、核对字段和状态范围再建立内部对象。不要用可选字段或强制转换隐藏模型变更遗漏先确认业务允许再修改约定。学习总结这篇我把同一条工单的字段放到对象中用接口表达结构并把类留给有明确创建行为的场景。结构约定、初始化和运行时校验各有职责。发布前补齐实际诊断与构建记录。下一篇在工单数组上练习遍历、映射和筛选为列表渲染准备数据。参考资料华为开发者联盟ArkTS 语言概览华为开发者文档ArkTS 语法适配背景华为开发者文档类实现接口与跨文件样式复用声明本文为学习示例与练习方法配图为知识示意图语法、诊断和构建结果以当前工具链、实际工程及官方文档为准。返回顶部