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

鸿蒙ArkUI布局与样式进阶(十四)——剩余参数 · 展开运算符 · 接口继承 · 接口实现 · 泛型全面讲解

🚀 鸿蒙开发入门必看!30 分钟掌握 ArkUI 界面开发

       大家好,我又来更新我的学习笔记啦!📒 这是我在学习HarmonyOS ArkUI 开发 时新的整理与思考。本篇内容比较全面,说实话,光靠看官方文档很难完全消化知识点,而把它们转化为笔记,再写成文章,能加深很多理解。所以这篇文章里,我不仅整理了原始代码,还会穿插一些自己的见解和体会,帮助你更好地掌握这些知识。  

        这是我在学习 TS 时整理的核心知识点,加入了真正理解后的总结和工程经验,希望能帮到你。本编包含所有接口的用法和定义,是对该板块的总结篇,如有疑问欢迎与驻波讨论学习。

目录

✅ 一.剩余参数 & 展开运算符

✨定义 — 剩余参数(Rest Parameters)

✨定义 — 展开运算符(Spread)

✅ 二.接口继承(extends)

✅三.接口实现(implements)

✅ 一图带你记住所有知识点!

✅ 一.剩余参数 & 展开运算符

ArkUI 组件交互中最强「动态能力」

✨定义 — 剩余参数(Rest Parameters)

将不确定数量的参数收集成数组
✅ 只能出现在参数列表最后

🧠ArkUI 个人理解

适用于事件回调或业务运算参数不确定情况
逻辑更灵活,函数更通用

语法:

✅ 案例1:原笔记示例完整复刻 + 扩展

function sum(num1: number, num2: number, ...theArgs: number[]): number {let total = num1 + num2;for (const arg of theArgs) {total += arg;}return total;
}console.log(sum(1, 2).toString());        // 3
console.log(sum(1, 2, 3, 4).toString());  // 10📌输出
✔ 3
✔ 10

✅ 案例2(笔记内完整版)

— 带必选参数,剩余参数运算累加

function sum(n1: number, n2: number, ...argArr: number[]): number {console.log('剩余参数', argArr);let total: number = n1 + n2;for (let temp of argArr) {total += temp;}console.log('结果', total);return total;
}
// sum(1, 2) => 3
// sum(1, 2, 3, 4) => 10
// sum(1, 2, 3, 4, 5, 6) => 21

⚠️ArkUI 增补坑点

❌ 剩余参数不能写在前面,否则报错
✅ 一定是 (...args)

✨定义 — 展开运算符(Spread)

将数组/对象打散
✅ 常用于响应式数据更新

🧠ArkUI理解

ArkUI 响应式刷新依赖不可变数据
展开运算符 = 更新 UI 最推荐操作!

✅ 原笔记案例

const numArr1: number[] = [1, 2, 3];
const numArr2: number[] = [5, 6, 7];
// 数组遍历
const totalArr: number[] = [...numArr1, ...numArr2];
console.log('展开的数组', totalArr);

📌输出结果

展开的数组 [1,2,3,5,6,7]

✅ UI 场景
列表追加数据、瀑布流填充、懒加载

✅ 二.接口继承(extends)

✨定义

一个接口可继承另一个接口属性
实现数据抽象复用

🧠ArkUI理解

数据模型复用 → UI组件开发更高效

语法:

✅ 原笔记示例

interface IAnimal {name: string
}
interface ICat extends IAnimal {color: string
}
const cat: ICat = {name: '加菲猫',color: '黑色'
}

📌说明
✔ ICat 包含 name + color
✔ 可用于卡片组件展示

✅三.接口实现(implements)

让类强制遵循业务标准

✨定义

类必须实现接口所有属性和方法
否则报错 ✅

🧠 ArkUI理解

类似组件约束规范,避免遗漏功能引发 UI Bug

语法:

✅ 示例 1(方法必实现)

interface IDog {name: stringbark: () => void
}
class Dog implements IDog {name: string = ''food: string = '' // 允许扩展属性bark() {console.log("汪汪汪")}
}

✅ 示例 2(笔记完整例子)

interface IDog {name: stringage: numberjump: () => void
}
// 基于接口,实现类
class Dog implements IDog {name: stringage: number // 不写默认值也可以constructor(name: string, age: number) {this.name = namethis.age = age}jump() {console.log('跳起来')}
}
let dog: Dog = new Dog('旺财', 2) // 是一只非常帅的狗狗
dog.jump()

✅四.泛型(Generics)

ArkUI 可复用组件的灵魂能力!

✨定义

类型可作为参数传递
函数/类可支持多种数据类型

🧠ArkUI理解

一套组件适配多种类型,减少重复 UI 开发!

✅ 原笔记示例合集(语法 ✅)

function fn1(temp: string): string {return temp
}
function fn2(temp: number): number {return temp
}
function fn3(temp: boolean): boolean {return temp
}

🙅‍♂️ 缺点:重复代码太多

✅ 泛型万能函数

function fn<T>(param: T): T {return param
}
fn<string>('abc')
fn<number>(123)
fn<boolean>(true)
fn<number[]>([1, 2, 3, 4, 5])
// 类型推断
fn('abc')
fn(123)
fn(true)
fn([1, 2, 3, 4, 5])

✅ 泛型数组长度函数(笔记示例)

function getLength<T>(arr: T[]): number {return arr.length
}
console.log(getLength<number>([1, 2, 3])) // 3
console.log(getLength<string>(['a', 'b', 'c'])) // 3

✔任何数组 ✅
✔类型安全 ✅

✅ 一图带你记住所有知识点!
能力核心作用 ArkUI 使用场景
剩余参数 动态参数收集事件回调、多状态更新
展开运算符不可变数据更新 响应式UI自动刷新
接口继承 数据结构复用 多组件共享模型
接口实现强行为约束业务逻辑强制完整
泛型  通用组件逻辑列表/弹窗/服务复用

🎯掌握以上知识点,你就可以在 ArkUI 项目中写出高效、可维护、可扩展的面向代码。

💡掌握了 剩余参数 · 展开运算符 · 接口继承 · 接口实现 · 泛型技巧,也就掌握了 ArkUI 的一半交互核心!

恭喜您,迈出了鸿蒙应用开发坚实的一步!🎉

🤔 接下来,我将继续为大家更新鸿蒙开发的相关知识点,如果喜欢,记得关注驻波。

✅ 如果你觉得这篇 ArkUI 学习笔记对你有帮助,记得 点赞 + 收藏,关注我获取更多鸿蒙开发干货!📝 有任何问题欢迎在评论区留言,我们一起交流学习!

过往的博客欢迎各位大佬捧场。

对harmonyos感兴趣的培养记得关注驻波

那年窗外下的雪.-CSDN博客

http://www.dtcms.com/a/540523.html

相关文章:

  • 【# Python 离线安装:把 pip 源设为本地目录】
  • 在pycharm中install不上需要的包
  • 国外工业设计网站建站系统软件有哪些
  • 做网站毕业设计华建河北住房和城乡建设厅网站
  • 公司网站免费建站西安网站工作室
  • 20.13 ChatPPT v3.0多模态图像处理实战:突破93.2%准确率的技术揭秘
  • 回头看SSM项目的创建
  • 《赋能AI解锁Coze智能体搭建核心技能(1)--- 初识coze》
  • 大模型面试题:请讲一下GPT系列模型是如何演进的?
  • 分享5款软件让电脑更方便
  • 做网站建设公司赚钱浙江省建设厅网站地址
  • 内容补充--高精度空转(Xenium、CosMx)空间距离分析
  • 20.12 ChatPPT图像识别实战:多模态整合实现42%生成效率提升,800ms极速生成方案揭秘
  • sof 是运行在linux内核里 还是运行在DSP里面
  • 网站做edi认证有用没千库网登录入口
  • 【Leetcode hot 100】215.数组中的第K个最大元素
  • Leetcode每日一练--44
  • Leetcode 3728. Stable Subarrays With Equal Boundary and Interior Sum
  • 江科大stm32 | OLED显示汉字
  • vue3前端解析excel文件
  • 5.1.5 大数据方法论与实践指南-数据仓库存储格式选择
  • 网站空间1g多少钱怎么做网站加盟
  • 学校网站怎么做推广上海网站建站多少钱
  • php网站开发心得体会漯河市网站建设
  • 打工人日报#20251028
  • 手写前端脚手架cli
  • 《内蒙古自治区本级政务信息化运行维护项目预算支出方案编制规范和预算支出标准(试行)》(内财预〔2024〕194号)标准解读
  • 在 Spring Boot 项目中使用分页插件的两种常见方式
  • MapReduce运行实例
  • “透彻式学习”与“渗透式学习”