尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
【鸿蒙心迹】HarmonyOS学习笔记04:ArkTS变量与类型
个人主页杨利杰YJlio❄️个人专栏《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》《超简单用Python让Excel飞起来》让复杂的事情更简单让重复的工作自动化文章目录前言让变量表达工单数据一、先把字段与类型对应起来二、let 与 const看绑定是否会重新赋值三、显式类型与类型推导怎么选四、有限状态先用枚举表达五、类型声明不会自动验证外部数据六、用一个类组合工单字段七、单独制造一次错误赋值八、空值、类型和界面刷新别混淆学习总结参考资料前言让变量表达工单数据大家好我是杨利杰 YJlio。读完应用入口后我开始给页面准备一条工单数据标题是文本重试次数是数字是否解决是布尔值。这篇不追求一次掌握所有语法先把变量的修改意图、类型标注和类型推导分清楚。本文属于 HarmonyOS 7.0 学习笔记第 04 篇。示例用于练习实际 DevEco Studio、SDK/API 与构建结果需要在本机填写配图为知识示意图。类型检查、外部数据校验和页面刷新是三件事不能互相替代。环境项本次记录DevEco Studio待填写HarmonyOS SDK/API待填写工程现有 ArkTS 练习工程目标读懂字段类型记录错误赋值诊断一、先把字段与类型对应起来我先用三个字段建立数据模型。它们的值只是练习数据不能当成实际业务记录。consttitle:string网络无法连接;letretryCount:number0;letisResolved:booleanfalse;retryCount1;isResolvedtrue;string表达文本number表达数值boolean表达真假。标题写成字符串、次数写成数字可以让声明直接说明用途。number本身并不保证“非负整数”。如果次数来自用户输入或网络仍应检查它是否为整数、是否非负。静态类型只表达其中一层约束。二、let 与 const看绑定是否会重新赋值我选择声明方式时先判断变量是否需要重新赋值而不是把两种写法随意混用。写法修改意图示例let绑定可以重新赋值重试次数逐次增加const绑定不能重新赋值固定的工单标识一个常见误会是把const理解为“所有内容都不能改”。对于对象不能把这个绑定重新指向另一个对象与不能修改对象属性是不同的限制。const 约束绑定的重新赋值不会自动冻结对象属性。页面中需要显示并变化的数据还要结合 ArkUI 状态机制。这里先学习普通变量不预先给它添加响应式效果。三、显式类型与类型推导怎么选初始值清晰的局部变量可以通过类型推导减少重复标注需要表达业务边界时我会把类型写出来。constcategory网络;letpriority2;priority3;// priority 高; // 单独取消注释记录实际诊断后撤销省略类型标注不意味着允许任意类型。编译器会依据初始值进行推导后续赋值仍要符合推导出的类型。我会查看 IDE 的类型提示再决定是否需要显式标注。跨文件使用的数据、函数参数和返回值通常更值得把约束表达清楚。仅为消除报错而放宽类型会掩盖真正的数据问题。四、有限状态先用枚举表达原稿用 TypeScript 字符串字面量联合类型描述状态。发布稿改用命名枚举示例避免把一段 TS 写法直接宣称适用于所有 ArkTS 工具链。enumTicketStatus{New0,Processing1,Resolved2}letstatus:TicketStatusTicketStatus.New;statusTicketStatus.Processing;枚举名称让状态含义更容易阅读。图中三个状态是可用名称并未定义业务上的全部流转规则。数字枚举值也不是外部数据验证器。服务端传来一个数字后不能只把它标成TicketStatus就认定合法仍需要根据协议检查取值。具体语法支持和诊断以当前 SDK 为准。五、类型声明不会自动验证外部数据我会把“工程内部的声明和赋值检查”与“外部数据进入程序时的检查”分开处理。层次本篇关注的内容静态类型变量声明、错误赋值、函数参数等约束运行时检查字段是否存在、值是否符合业务范围数据转换根据协议把外部值映射为内部模型华为的ArkTS 语法适配背景介绍了强化静态检查和空安全的原因也指出与 TS/JS 交互时可能绕过检查边界。原稿将any描述成可用的宽泛类型这容易让初学者误以为它是消除报错的通用办法。本篇不提供这类写法遇到相关诊断应检查真实数据结构、导入和当前语言约束。类型标注不会替你检查网络响应、文件内容或用户输入。六、用一个类组合工单字段我把几个字段组织成一条工单并给属性提供明确类型和初始值。示例仍需在实际工程中构建确认。classTicketSummary{id:stringT-1001;title:string网络无法连接;retryCount:number0;isResolved:booleanfalse;status:TicketStatusTicketStatus.New;}constsample:TicketSummarynewTicketSummary();sample.retryCount1;sample.statusTicketStatus.Processing;这里沿用上一节的TicketStatus声明。sample的绑定不变属性仍可以更新正好对应前面const的区别。后续学习接口和类时再比较它们各自负责什么。这一节只要求读懂字段与初始值不把它包装成完整工单应用。七、单独制造一次错误赋值我会在独立练习文件中先构建正常示例再只改一个赋值保存诊断证据后撤销。// 在正常示例之外逐项实验不同时取消所有注释// sample.retryCount 1;// sample.isResolved true;// sample.title 100;保留已有模板找到合适的逻辑文件或已有执行位置。添加枚举、类与示例数据按工程规则处理导出和调用。先进行一次正常构建保存结果。每次只取消一条错误赋值的注释记录文件位置和完整诊断。撤销该修改再次构建确认没有把练习错误留下。实验实际诊断撤销后构建数字字段赋字符串待填写待填写布尔字段赋字符串待填写待填写文本字段赋数字待填写待填写编辑器下划线属于诊断线索不等于整个工程已经构建通过。八、空值、类型和界面刷新别混淆遇到“数据看起来对但显示不对”的问题我会先判断问题属于数据值、类型约束还是页面状态。现象阅读和排查方向字符串为空确认空字符串在业务中的含义字段可能不存在按协议表达可选值并处理缺失情况类型赋值错误检查声明、推导类型与调用位置改值后页面没刷新检查当前 ArkUI 状态管理方式空字符串是一个字符串值缺失字段则是另一种状态两者需要明确约定。普通变量变了也不会自动成为页面响应式状态。后续状态管理章节会专门练习这一点。学习总结这篇我从工单字段出发区分let与const、显式类型与推导再用命名枚举和一个类组合数据。最需要记住的是类型表达数据约束实际值还要检查页面变化还要交给对应的状态机制。发布前补齐工具版本与真实构建诊断。下一篇继续学习函数参数与返回值把标题校验拆成可以明确调用的逻辑。参考资料华为开发者联盟ArkTS 语言概览华为开发者文档ArkTS 语法适配背景华为开发者文档编译诊断与模块引用问题声明本文为学习示例与练习方法配图为示意信息图语法支持、诊断与构建结果以实际 DevEco Studio、SDK 和官方文档为准。返回顶部
RELATED

相关推荐

AI 选题成主流,计算机专业毕设热门选题:含大数据 / 小程序 / 深度学习 / RAG/Web 系统等方向,可以照着抄

AI 选题成主流,计算机专业毕设热门选题:含大数据 / 小程序 / 深度学习 / RAG/Web 系统等方向,可以照着抄

💖💖作者:IT跃迁谷毕设展 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数…

📅 2026/10/20 11:11:22
AI漫剧入门:先学ComfyUI还是先买显卡?4060实测给你答案

AI漫剧入门:先学ComfyUI还是先买显卡?4060实测给你答案

AI漫剧这波热度大家应该都感觉到了,身边不少朋友问我,想入行做AI漫剧,第一步是掏钱买显卡,还是先埋头把ComfyUI弄明白?这个问题其实挺典型的,属于“还没开始干活就卡在工具选择上”。我更愿意用一套实测数据…

📅 2026/10/20 11:11:22
R3752A 网络分析仪:扫频参数一次配齐

R3752A 网络分析仪:扫频参数一次配齐

Advantest R3752A 是一台网络分析仪。扫频类仪器的面板上按钮特别多,但真正决定一次测量结果的,其实就那么几组参数。这篇把这几组拆开讲清楚。01 第一组:扫什么起始频率、终止频率、点数。这三个数决定了横轴。看起来简单,但有两…

📅 2026/10/20 11:11:22
MORE NEWS

更多资讯

📰

弹性伸缩实战:扩容失效、成本失控与业务报错的排查指南

1. 弹性伸缩到底解决什么问题——先认清它是干什么的作为常年帮客户做云上架构设计、部署上线和售后运维的渠道商,我打交道最多的阿里云产品里,弹性伸缩绝对排在前三。无论客户是搞电商大促、预约抢购、票务秒杀,还是老老实实做SaaS业务&…

📰

Excel批量删除空格全攻略:识别空格类型与高效清洗方案

做数据清洗的人大概都遇到过这种诡异场景:收到一份表,肉眼扫过去每一列都正常,可等到做VLOOKUP、筛选或者和别的表对账的时候,死活匹配不上。某次我在处理一份从网页上复制的名单时,明明按姓名筛选能看到“张三”&…

📰

STM32驱动VL53L1X激光测距:从I2C通信到稳定读数

简介:一份基于STM32F103VET6微控制器与VL53L1X激光测距传感器的完整工程包,面向需要实现非接触式距离测量的嵌入式开发者。主控芯片采用ARM Cortex-M3内核,通过I2C总线与VL53L1X通信,PA2/PA3分别配置为SDA/SCL,PA4接XS…

📰

无线传感器网络覆盖优化:MATLAB虚拟力算法与PSO/GA代码实战

简介:这份MATLAB代码合集面向无线传感器网络(WSN)覆盖优化方向的学习者与研究者,适合具备一定MATLAB基础、希望快速复现并对比多种智能优化算法效果的高年级本科生、研究生及科研人员。资源围绕WSN节点部署与覆盖增强问题&#xf…

📰

双指针精讲:从移动零到数组原地压缩的通用套路

LeetCode hot100 里的移动零,我隔一阵子就会刷到一次,每次看都觉得这题简直是把“双指针”三个字浓缩成了一碗汤。题面很朴素:给定一个数组,把所有0移动到末尾,同时保持非零元素的相对顺序,并且不能拷贝额外…

📰

Agent Harness 标准化实战:从混乱到可控的工程化之路

做 Agent 应用的人,应该都经历过这样一段混乱期。Agent Harness 这个词,最近频繁出现在 Agent 工程化的讨论里,但真要动手搭一套,大家第一反应往往是:这不就是把大模型循环跑起来、把工具接进去、把上下文拆出去吗&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬