鸿蒙移动应用开发基础 课件 项目2 夯实 ArkTS 语言核心基础-实现个人基本信息输出_第1页
鸿蒙移动应用开发基础 课件 项目2 夯实 ArkTS 语言核心基础-实现个人基本信息输出_第2页
鸿蒙移动应用开发基础 课件 项目2 夯实 ArkTS 语言核心基础-实现个人基本信息输出_第3页
鸿蒙移动应用开发基础 课件 项目2 夯实 ArkTS 语言核心基础-实现个人基本信息输出_第4页
鸿蒙移动应用开发基础 课件 项目2 夯实 ArkTS 语言核心基础-实现个人基本信息输出_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目2夯实ArkTS语言核心基础-实现个人基本信息输出鸿蒙移动应用开发基础授课:学习网站/#/cn/home/consumer/cn/doc//mainPlay/course/246260023.html目录01初时Arkts语言02掌握ArkTS基础语法0304学习接口、函数和类的使用任务实施:输出个人基本信息本章目标知识目标系统掌握ArkTS基本数据类型、变量声明赋值与常量使用;深入理解接口、函数的定义实现,以及类的属性和方法的核心逻辑。能力目标能够独立编写变量赋值与输出的ArkTS代码,按需定义并实现接口与函数;具备创建类、调用类属性和方法的实践能力,解决基础编程问题。素养目标培养严谨规范的代码编写习惯,建立面向对象的编程思维;激发编程探索兴趣,提升逻辑思维、代码组织与模块化设计的综合素养。以知识为基石,以实践为手段,以素养为核心,构建完整的ArkTS编程能力体系,为后续开发打下坚实基础。初时Arkts语言011.1Arkts语言的介绍核心指引:ArkTS——构建应用的“语言骨架”“ArkTS是构建HarmonyOS应用的‘语言骨架’,变量、数据类型、函数、类等基础语法,是搭建任何功能模块的基石。掌握这些核心要素,就如同掌握了建筑大厦的钢筋水泥,为后续构建复杂、高效的应用提供了坚实支撑。”——鸿蒙开发文档吃透语言基础跟随开发脉络,系统掌握变量、类型与逻辑组织,建立对ArkTS语法体系的完整认知。掌握核心技能学习用代码定义数据、封装逻辑,将理论转化为实操能力,解锁构建真实应用的关键钥匙。驱动应用“生长”理解语法如何赋予应用生命力,从静态界面走向动态交互,完成从“代码”到“产品”的蜕变。1.1Arkts语言的介绍核心概念:鸿蒙生态的主力语言ArkTS是华为专为HarmonyOS生态量身打造的主力开发语言,从底层为鸿蒙应用开发提供统一、高效的语言支撑,是构建鸿蒙生态应用的核心基础。设计初衷:兼顾性能与开发效率针对传统跨平台开发中“高性能难实现、开发效率低”的痛点而生,致力于让开发者用更少的代码,构建出更流畅、更丰富的鸿蒙原生应用。技术基础:TypeScript的强力超集基于TypeScript扩展而来,完整继承其静态类型检查、面向对象等核心特性;同时新增鸿蒙生态特有的声明式UI语法糖与系统级API,让开发更便捷。核心目标:全场景的极简安全开发提供“简洁、高效、安全”的开发体验,一套代码即可满足手机、平板、智能手表、智慧屏、家电等鸿蒙全场景设备的开发与部署需求。1.1Arkts语言的介绍生态定位HarmonyOS应用开发的“首选语言”无论是构建简洁直观的UI界面,还是开发复杂的后台服务逻辑,ArkTS凭借其易用性与高效性,成为鸿蒙生态开发者的第一选择。覆盖全场景的统一开发范式从应用层的可视化交互界面,到服务层的核心业务逻辑处理,ArkTS提供了端到端的统一开发体验,降低了跨层级开发的复杂度。与鸿蒙分布式能力深度融合语法原生适配鸿蒙分布式架构,让开发者能便捷地调用设备协同、数据流转等能力,轻松构建跨终端的创新应用体验。ArkTS不仅是为鸿蒙而生的语言,更是开发者与鸿蒙操作系统高效对话的核心桥梁,是开启全场景智慧生态的关键钥匙。2.1ArkTS的核心特性01.静态类型检查,筑牢代码安全防线编译期类型锁定,拒绝模糊定义继承TypeScript成熟的静态类型系统,所有变量类型在代码编译阶段即可被确定,而非在应用运行时动态解析,从根本上规避了因类型隐式转换带来的逻辑混乱。错误前置拦截,提升代码健壮性能在编码阶段就提前发现类型不匹配、空指针调用等低级错误,有效减少应用运行时的崩溃概率,尤其在大型复杂项目中,可大幅降低后期调试与维护的成本。//明确声明count为数字类型letcount:number=10;//尝试赋值字符串,编译器将直接报错count="hello";//Error:Type'string'isnotassignabletotype'number'开发体验与质量的双重提升让错误在编写代码的第一时间暴露,而非等待应用运行时才崩溃,不仅能减少Bug数量,还能让开发者更专注于业务逻辑,而非反复排查类型相关的低级错误。2.1ArkTS的核心特性02.声明式UI,简化界面开发核心理念:UI=f(State)开发者只需描述UI在不同状态下应呈现的最终样子,无需编写繁琐的命令式操作代码,框架会自动处理从状态变更到UI更新的完整映射过程。实现方式:装饰器与声明式语法通过引入@Component、@Entry等装饰器定义组件单元,在build()方法中以声明式的直观语法描述界面结构,让代码层次清晰,便于理解和维护。开发优势:简洁直观,逻辑解耦实现了UI描述与业务逻辑的彻底分离,规避了命令式编程中常见的状态管理混乱问题,显著降低代码复杂度,大幅提升应用的开发与迭代效率。代码示例:极简按钮组件实现@ComponentstructMyButton{@Statelabel:string="点击我";build(){Button(this.label).onClick(()=>{this.label="已点击";});}}声明式语法让代码更接近自然语言描述,实现了“所见即所得”的开发体验,极大降低了前端界面开发的心智负担。2.1ArkTS的核心特性03.响应式状态管理01.自动绑定机制提供`@State`,`@Prop`,`@Link`等装饰器,建立数据与UI的自动绑定关系,让数据成为界面的唯一真理来源。02.无感自动更新当被装饰的数据发生变更时,依赖该数据的UI部分会自动触发重新渲染,开发者无需编写任何手动刷新界面的代码。03.简化开发逻辑彻底摒弃了传统开发中“数据修改后手动通知刷新”的繁琐模式,将开发者的精力从UI同步中解放,专注于业务逻辑实现。▌响应式更新工作流状态触发用户交互操作或底层业务逻辑修改了被装饰的状态变量。变更检测ArkTS装饰器机制实时捕获变量值的变化,标记为脏数据状态。依赖追踪框架运行时自动识别并追踪所有依赖于该状态变量的UI组件节点。局部更新仅对受影响的UI组件进行差分渲染和局部更新,保证性能最优。2.1ArkTS的核心特性04.面向HarmonyOS分布式能力的语法支持原生分布式语法ArkTS内置对鸿蒙分布式设备、跨设备通信的底层语法支持,为开发者提供了构建分布式应用的基础能力。简洁的能力声明通过`@Ability`装饰器即可轻松声明应用能力,实现多设备间的状态协同,例如手机操控平板应用,代码更直观简洁。创新应用的基石大幅降低了分布式应用的开发门槛,让开发者能更专注于业务创新,快速打造无缝连接多端的优质用户体验。分布式场景实践无缝流转的通话体验手机端的视频通话,可一键无缝流转至智慧屏,延续通话状态,无需重新连接。跨端协同的游戏操控手机游戏画面投射至大屏电视,同时使用手柄进行操控,手机作为副屏显示辅助信息。多端同步的健康数据智能手表采集的心率、步数等健康数据,可实时、安全地同步到手机与电脑,实现数据的统一管理。2.1ArkTS的核心特性05.轻量高效,适配多设备编译深度优化编译时将代码转换为高效的二进制指令(方舟字节码/机器码),大幅降低应用运行时的内存占用与系统功耗。支持按需编译仅保留特定设备所需的代码模块,剔除冗余部分,从编译源头显著减少应用安装包体积,提升分发效率。适配轻量化设备专为智能手表、智能家电等资源受限的嵌入式设备优化,在有限的硬件条件下也能提供流畅稳定的用户体验。更小安装包,极速触达用户应用下载更快,占用用户存储空间更少,降低用户下载门槛,尤其适合移动网络环境下的应用分发。更低资源消耗,续航更持久应用运行更流畅,CPU与内存占用极低,有效减少设备耗电量,大幅提升智能穿戴设备的续航表现。ArkTSvsTypeScript详细对比核心结论:ArkTS是TypeScript的超集,专为鸿蒙生态深度定制。它在UI构建、状态管理和系统底层交互上做了极致优化,提供了开箱即用的原生能力,比通用的TypeScript更适合鸿蒙应用开发。ArkTS鸿蒙原生应用开发语言,扩展了TS的类型系统与装饰器,实现与系统内核的高效通信。TypeScript基于JavaScript的静态类型语言,广泛用于Web、跨端框架开发,依赖宿主环境运行。UI构建范式ArkTS采用声明式@Component直接定义UI,原生渲染更高效;TS则需配合React/Vue等框架,依赖虚拟DOM或命令式更新。状态管理机制ArkTS内置@State/@Link等装饰器,轻量高效;TS开发需引入Redux、MobX等第三方库,配置繁琐,学习成本高。编译目标与环境ArkTS编译为鸿蒙字节码/机器码,直接运行于鸿蒙OS内核;TS编译为JS,运行在浏览器或Node.js等JS宿主环境中。生态组件与生命周期总结:ArkTS内置鸿蒙原生组件库和生命周期函数(如aboutToAppear),能充分调用系统底层能力;TypeScript则依赖社区生态的第三方UI库和框架提供的生命周期钩子。ArkTS是鸿蒙应用开发的最佳选择,而TypeScript则是通用Web开发的标准语言。掌握Arkts的基础用法022.1声明变量与常量1.声明变量使用let关键字声明变量,变量值可以修改。

语法格式:let变量名:类型=初始值;

例如:

letage:number=25;

number=302.声明常量使用const关键字声明常量,常量值不可修改。

语法格式:Const常量名:类型=初始值;

例如:

constage:number=25;

在ArkTS中,变量与常量的声明方式继承自TypeScript,同时结合了静态类型特性。由于ArkTS是强类型语言,推荐显式指定类型(或通过类型推断确定),以提升代码可读性和编译时类型校验能力。2.1声明变量与常量变量(let)声明后值可以被修改,适用于需要在程序运行过程中动态变化的数据。letage:number=25;age=30;//合法,变量值可修改常量(const)值一旦被赋值就不能再更改,常用于定义固定不变的配置项或引用。constPI:number=3.14;//PI=3.14159;//报错,常量不可改类型推断若声明时提供初始值,编译器会自动分析并确定变量类型,无需显式标注。lethi="hello";//推断为string//hi=123;//报错,类型不匹配核心要点:优先使用const保证数据不可变,需要修改时使用let,利用类型推断简化代码书写。2.2基本数据类型的使用2.2基本数据类型的使用基本数据类型(1/9)`number`类型:统一的数值表示ArkTS与JavaScript一致,仅使用一种数值类型来表示整数、浮点数(小数)以及十六进制数等,无需区分整型和浮点型,让数字处理更加简洁灵活。TypeScript声明示例letintNum:number=42;//整数赋值letfloatNum:number=3.14;//浮点数(小数)赋值lethexNum:number=0xff0000;//十六进制数(等于16711680)NaN即“非数字”(NotaNumber)。通常出现在数学运算无法得到数字结果时,例如0除以0。Infinity表示“无穷大”。当一个正数除以0时,会得到该值,代表超出了数字可表示的上限。-Infinity表示“负无穷大”。当一个负数除以0时,会得到该值,代表超出了数字可表示的下限。💡提示:在进行数值计算时,建议先做合法性校验,避免因产生NaN或Infinity导致后续逻辑异常。2.2基本数据类型的使用基本数据类型(2/9)核心概念与定义`string`类型用于表示文本数据,在程序中处理所有文字相关的信息,是最常用的基础类型之一。支持三种定义符号:单引号(')、双引号(")和反引号(`),其中反引号支持多行与插值。代码实战示例letstr1:string='Hello';letstr2:string="World";letstr3:string=`Hi,${str2}!`;//模板字符串支持直接嵌入变量,语法更简洁直观。常用属性与方法基础操作:

通过`.length`获取长度;使用`+`运算符进行字符串拼接。核心方法:

toUpperCase()/toLowerCase()(大小写转换),以及indexOf(),split(),trim()等处理方法。提示:模板字符串(``)是ES6引入的新特性,不仅支持多行文本,还能通过${}直接嵌入变量或表达式,是构建动态文本的首选方式。2.2基本数据类型的使用基本数据类型(3/9)03.boolean布尔类型布尔类型是表示逻辑状态的基础类型,仅包含两个互斥的值:true(真)和false(假)。它是构建程序逻辑判断、状态开关的核心基石。常见应用场景:常用于条件判断语句(if/else)、循环控制(while/for)以及记录开关状态(如权限校验、功能启用)等场景。//声明布尔类型变量

letisStudent:boolean=true;

lethasAccess:boolean=false;

if(isStudent){console.log("优惠生效");}💡核心要点:布尔类型不参与算术运算,仅用于逻辑判断,是程序控制流中不可或缺的基础元素。2.2基本数据类型的使用基本数据类型(4/9)04.void类型——“无类型”的函数返回值核心定义:表示“无类型”,是TypeScript中用于标识函数没有返回值的类型注解。它明确告知调用者,该函数仅执行操作,不会产出任何可供使用的结果。关键说明:在JavaScript中,无return语句的函数默认返回undefined;而在TypeScript中,我们用void定义这种情况,它比undefined更强调“无返回”的语义。//声明一个无返回值的函数functionlogMessage(message:string):void{console.log(message);//仅执行操作,无return语句}---//调用函数,变量接收void类型值letresult=logMessage("Hello,TypeScript!");//result的类型是void,运行时值为undefined💡提示:当函数仅执行副作用(如打印、修改状态)而不产出数据时,使用void能让代码意图更清晰。2.2基本数据类型的使用基本数据类型(5/9)05.Object类型核心描述TypeScript中所有引用类型的基类型,用于表示除number、string、boolean等基本类型之外的任何复杂值,是构建复杂数据结构的基础。最佳实践虽然可直接使用Object类型,但在实际开发中,更推荐使用Interface(接口)来显式定义对象的属性结构,以获得更严格的类型校验和IDE智能提示。object-demo.ts—TypeScriptletuser:Object={name:"张三",age:25};//推荐:使用接口定义结构,更规范安全interfaceUser{name:string;age:number;}letuser2:User={name:"李四",age:30};使用接口定义对象结构,能在编译阶段捕获属性类型错误,大幅提升代码的可维护性。2.2基本数据类型的使用基本数据类型(6/9)01.核心定义数组(array)是由相同数据类型的元素按顺序组成的集合,是ArkTS中存储和管理一组有序数据的基础方式。支持两种等价写法:元素类型[]或Array<元素类型>02.代码示例letnumbers:number[]=[1,2,3,4,5];letfruits:Array<string>=["苹果","香蕉","橙子"];//两种写法效果完全一致03.常用内置方法push():在数组的末尾添加一个或多个元素,并返回新的长度。pop():删除并返回数组的最后一个元素,若数组为空则返回undefined。length:获取或设置数组中元素的个数,是数组最基础的属性之一。💡总结:数组提供了便捷的方式来存储和访问有序数据集合,内置的增删查方法极大提升了数据处理的效率。2.2基本数据类型的使用基本数据类型(7/9)7.`enum`类型(枚举)枚举类型允许开发者为一组数值赋予友好的名字,让代码语义更清晰、更具可读性,而非直接使用无意义的数字常量。常用于表示固定的状态码(如HTTP状态)、方向、选项等有限且相关的常量集合,极大提升代码的可维护性。//默认从0开始递增赋值

enumDirection{Up,Down,Left,Right}

letmove:Direction=Direction.Up;//move=0//手动指定具体的数值(如HTTP状态码)

enumStatus{Success=200,Error=500,NotFound=404}

letres:Status=Status.Success;//res=200核心优势:用语义化的名称替代魔法数字,不仅降低了出错概率,也让代码逻辑一目了然。2.2基本数据类型的使用基本数据类型(8/9)Union联合类型联合类型使用竖线`|`分隔多个类型,表示变量可以是其中任意一种类型。它扩展了变量的类型灵活性,同时保持了静态类型检查的优势。核心用途与价值适用于变量类型不确定,但能明确限定为有限的几个类型的场景。TypeScript会确保仅能执行所有联合类型共同支持的操作,从而在灵活赋值和类型安全之间取得平衡。代码实战示例letdata:string|number;data="Hello";//合法赋值data=123;//合法赋值//data=true;//报错:非联合类型总结:联合类型让变量“身兼数职”,既满足了业务数据的多样性,又通过TypeScript的静态检查规避了类型错误,是提升代码健壮性的重要工具。2.2基本数据类型的使用基本数据类型(9/9)9.TypeAliases(类型别名)核心描述:为已有的类型创建一个新的、更简洁的名称,本质上是为复杂类型(如联合类型、对象类型)提供“别称”,不创建新类型。主要用途:简化频繁使用的联合类型、对象字面量类型;提升代码的可读性与可维护性,在大型项目中统一类型定义,减少冗余。//1.为联合类型创建别名typeStringOrNumber=string|number;letval:StringOrNumber="Hi";val=456;//2.为复杂对象类型创建别名typeUser={id:number;name:string};constuser:User={id:1,name:"张三"};💡提示:类型别名可以是全局的,常用于定义复用性高的业务实体类型。2.3运算符类别运算符说明算术运算符+、-、*、/、%、++、--用于数值计算,++/--为自增/自减(前缀或后缀)赋值运算符=、+=、-=、*=、/=、%=基础赋值及复合赋值(如a+=b等价于a=a+b)比较运算符==、===、!=、!==、>、<、>=、<=比较值或类型,==忽略类型,===严格匹配值和类型逻辑运算符&&、||、!逻辑与、逻辑或、逻辑非三元运算符condition?expr1:expr2条件判断,条件为真返回

expr1,否则返回expr2类型运算符typeof、instanceoftypeof获取变量类型,instanceof判断对象是否为某个类的实例位运算符&、^、~、<<、>>对二进制位进行操作(与、或、异或、非、左移、右移)其他常用运算符??、?.、,??取第一个非null/undefined值;?.安全访问对象属性;,返回最后一个表达式结果在ArkTS中,常用的运算符可分为以下几类,如下表所示,该表涵盖了数据计算、逻辑判断、类型处理等场景:2.3运算符运算符:实用运算符除了常规算术与逻辑运算符,ArkTS引入了多种现代实用运算符,大幅提升代码的简洁性与健壮性,有效规避运行时错误。三元运算符condition?expr1:expr2简化版的if-else语句,根据条件判断的布尔值,直接返回两个表达式中的其中一个结果,让简单的分支逻辑更紧凑。类型运算符typeof/instanceoftypeof用于获取变量的基本数据类型;instanceof用于检测对象是否为某个类的实例,是类型检查与验证的重要工具。可选链运算符?.(OptionalChaining)安全访问嵌套对象的深层属性或方法。如果链中的某个引用为null或undefined,表达式会短路返回undefined,避免程序崩溃。空值合并运算符??(NullishCoalescing)仅当左侧操作数为null或undefined时,才返回右侧的默认值。它能正确处理0、false、空字符串等“假值”,比逻辑或||更精准。constPI:number=3.14159;letradius:number=5;letarea=PI*radius*radius;console.log(`半径为${radius}的圆面积是:${area}`);//结合类型注解与算术运算符,确保数值计算的类型安全与准确性。2.4控制语句ArkTS中,控制语句用于控制程序的执行流程,决定代码块的执行顺序、次数或是否执行。主要分为条件控制语句、循环控制语句和跳转控制语句三大类。2.4控制语句1.条件控制语句重复执行某段代码,直到满足终止条件,核心是“重复执行”。(1)if-else语句最基础的条件判断,可嵌套使用,适合复杂条件场景。语法:if(条件1){

//条件1为true时执行}elseif(条件2){

//条件1为false、条件2为true时执行}else{

//所有条件都为false时执行}2.4控制语句1.条件控制语句重复执行某段代码,直到满足终止条件,核心是“重复执行”。(2)switch-case语句适合对单一变量的多值判断,通过case匹配值,break跳出分支(否则会“穿透”执行下一个case)。

语法:switch(表达式){case值1://表达式等于值1时执行break;//可选,跳出switchcase值2://表达式等于值2时执行break;default://所有case不匹配时执行(可选)}2.4控制语句2.循环控制语句重复执行某段代码,直到满足终止条件,核心是“重复执行”。

for循环(传统)for循环适合已知循环次数的场景,通过初始化、条件、迭代器控制循环。语法:for(初始化;循环条件;迭代器){

//循环体}2.4控制语句(2)for...of循环For...of循环用于遍历数组、字符串等可迭代对象,直接获取元素值(而非索引)。语法:for(const元素of可迭代对象){//循环体}2.循环控制语句重复执行某段代码,直到满足终止条件,核心是“重复执行”。

2.4控制语句(3)while循环while循环适合循环次数不确定、仅依赖条件的场景,先判断条件再执行循环体。语法:while(循环条件){

//循环体(需包含让条件趋于false的逻辑,避免死循环)}2.循环控制语句重复执行某段代码,直到满足终止条件,核心是“重复执行”。

2.4控制语句(4)do-while循环do-while与while类似,但先执行一次循环体,再判断条件(至少执行一次)。语法:do{//循环体}while(循环条件);2.循环控制语句重复执行某段代码,直到满足终止条件,核心是“重复执行”。

3.跳转控制语句用于改变程序的执行顺序,提前结束循环或分支。

(1)break语句在循环中:立即终止当前循环,跳出循环体。在switch中:终止当前case分支,避免穿透。(2)continue语句跳过当前循环的剩余部分,直接进入下一次循环(不终止整个循环)(3)return语句用于函数中,立即终止函数执行,并返回指定值(若无返回值则返回undefined)。2.4控制语句总结:2.4控制语句作为程序的“大脑”,控制语句决定代码执行顺序,通过分支、循环与跳转,让程序具备逻辑判断能力,实现灵活的流程控制。01.if-else:复杂条件的灵活分支通过布尔表达式进行判断,适合处理范围值、多重嵌套或逻辑关系复杂的条件场景,是最常用的条件控制结构。letscore=75;

if(score>=90){console.log("A");}

elseif(score>=70){console.log("B");}

else{console.log("C");}02.switch-case:单变量的多值匹配将变量与一系列常量值进行匹配,代码结构更清晰,可读性更高,非常适合处理单一变量取离散值的场景。letweek=5;letday;

switch(week){

case1:day="周一";break;

case5:day="周五";break;default:day="周末";}总结:当判断条件涉及范围或复杂逻辑时首选if-else;当仅需判断单一变量的固定值时,switch-case是更优解。总结:2.4控制语句01循环控制:重复执行的核心逻辑for循环—已知次数的精准遍历适用于明确知道循环次数的场景,通过初始化、条件判断和增量更新三步完成循环,是最常用的循环方式。for...of循环—可迭代对象的便捷遍历专为数组、字符串等可迭代对象设计,无需关心索引,直接获取元素值,代码更简洁易读。while/do-while:适合循环次数未知的场景,基于条件判断决定是否继续执行,do-while保证至少执行一次。02跳转控制:流程的灵活中断与转向break:强制终止流程立即跳出并终止当前所在的循环(for/while)或switch分支语句,不再执行后续代码,直接结束该代码块。continue:跳过当前,进入下一轮跳过当前循环中continue之后的剩余代码,直接开始下一次循环的条件判断,不终止整个循环结构。return:终止函数并返回结果不仅会退出循环,还会立即终止当前所在函数的执行流程,并将指定的值返回给函数的调用者。接口、函数和类的使用033.1接口的使用接口(interface)核心作用:定义结构规范接口用于定义对象的属性和方法签名,仅做结构上的约束,不包含具体的实现逻辑,是对对象“长什么样”的严格规定。设计目的:契约式编程统一数据格式或类的行为标准,让不同模块之间通过“契约”协作,降低耦合度,确保在团队开发和大型项目中代码的一致性与可维护性。//1.定义接口:规定对象的结构契约interfaceUser{id:number;name:string;sayHello():void;}//2.实现接口:必须严格遵循规范constuser1:User={id:1,name:"张三",sayHello(){console.log(`Hi,${}`);}};接口定义了一组方法,但不提供实现。实现接口的类必须提供所有方法的具体实现。接口的定义需要使用关键字interface,接口不能包含任何方法的实现。与抽象类不同的是,接口方法不能被关键字abstract修饰。与类继承只能单继承不同,一个类允许实现多个接口。interface接口名{

字段名:字段类型;

方法名([参数列表]):返回类型;}

方法:接口确保实现它的类遵循特定的结构。

多态实现:当不同的类实现同一个接口时,方法可以有不同的实现,这体现了多态。3.1接口的使用3.1接口的使用作为函数参数类型接口最核心的用途之一,是作为函数参数的类型注解,强制约束传入参数必须匹配预设的结构规范。这让开发者在函数内部可安全访问属性与方法,依托TypeScript的静态类型检查,从源头规避因参数结构不符导致的运行时错误,显著提升代码的健壮性。//1.定义接口规范interfaceUser{id:number;name:string;sayHello():void;}//2.函数参数使用接口类型functionprintUser(u:User):void{console.log(`ID:${u.id},姓名:${}`);u.sayHello();//安全调用方法}//3.实例化并调用函数constuser1:User={id:1,name:"张三",sayHello(){console.log(`Hi,${}`);}};printUser(user1);严格的结构约束强制参数符合接口定义,拒绝非法数据传入。安全的方法调用编译期校验属性与方法,避免运行时“未定义”错误。高复用的契约标准接口作为契约,可在多个函数间复用,统一数据规范。3.1接口的使用输出3.2函数核心作用:逻辑封装与复用将一段可复用的业务逻辑封装为独立单元,接收输入参数进行处理,并最终返回指定的结果,是构建应用的基础。基本组成:三要素结构由参数(输入)、函数体(执行逻辑)和返回值(输出)三部分构成,结构清晰,定义了函数的行为和数据流转。01.普通函数声明(FunctionDeclaration)//定义加法函数,明确参数与返回值类型

functionadd(a:number,b:number):number{

returna+b;

}

letsum=add(5,3);//输出结果为802.箭头函数(ArrowFunction)//更简洁的写法,适合短逻辑与回调场景

constmultiply=(x:number,y:number):number=>x*y;

//隐式返回,代码更紧凑,常用于高阶函数参数

letproduct=multiply(4,5);//输出结果为203.2函数函数:带默认参数的函数函数参数可以指定默认值,当调用函数时没有传入该参数时,程序将自动使用预设的默认值,这让函数调用更灵活,代码也更健壮。//定义带默认参数的问候函数functiongreet(name:string="访客"):string{return`欢迎,${name}!`;}//调用:greet("李四")→"欢迎,李四!";greet()→"欢迎,访客!"提供合理的默认行为为函数设置常用场景的默认值,简化调用流程,让使用者无需记忆所有参数细节。保持向后兼容性在扩展函数功能时,为新增参数设置默认值,确保旧代码无需修改即可正常运行。💡核心价值:通过默认参数减少函数重载的数量,让代码结构更简洁,同时提升了API的易用性。3.2函数的使用

函数用于封装可复用的逻辑,接收输入参数并返回处理结果。使用function关键字定义函数。函数可以有参数和返回值。输出3.3类核心作用:对象的模板蓝图类是面向对象编程的核心,它将对象的属性(数据)与方法(行为)聚合在一起,为创建具体对象提供统一的规范和模板,让代码结构更清晰、更易维护。三大特性:面向对象的支柱完美支持封装(隐藏内部细节)、继承(代码复用与扩展)和多态(同一接口不同实现),是构建复杂、可扩展软件系统的基础方法论。TypeScript-定义与实例化基础类classAnimal{name:string;//定义属性(数据)constructor(name:string){//构造函数初始化=name;}makeSound():void{//定义方法(行为)console.log(`${}发出声音`);}}//使用new关键字创建类的实例并调用方法constanimal=newAnimal("小动物");animal.makeSound();3.3类的特性:继承(extends)继承是面向对象编程的核心特性之一,它允许一个类(子类)获取另一个类(父类)的属性和方法。这不仅实现了代码的高效复用,避免重复编写逻辑,还让子类能够灵活重写父类行为或拓展专属功能,构建出层次清晰的类结构。高效代码复用子类直接继承父类的通用属性和方法,无需重复开发基础功能,显著降低代码冗余度,提升开发效率。灵活的方法重写子类可以根据自身需求,重新定义父类已有的方法,修改其具体实现逻辑,实现多态的核心行为,适应不同场景。TypeScript代码示例:类的继承与方法重写classAnimal{name:string;constructor(n:string){=n;}}//子类继承父类,并扩展功能classDogextendsAnimal{makeSound(){console.log(`${}汪汪叫`);}fetch(){console.log(`${}叼来了球`);}}newDog("旺财").makeSound();//输出:旺财汪汪叫3.3类的特性:实现接口(`implements`)

类可以实现一个或多个接口,这是一种类与类之间的“契约”行为。实现接口意味着该类必须严格提供接口中定义的所有属性和方法的具体实现,从而确保不同类拥有统一的行为规范,广泛应用于回调、插件系统等场景。//1.定义接口,规范行为

interfaceRunable{run():void;}

//2.类继承父类并实现接口,必须实现run方法

classCatextendsAnimalimplementsRunable{

run():void{console.log(`${}快速奔跑`);}

}行为契约,强制实现

接口定义了“做什么”,实现类负责“怎么做”。编译器会检查实现类是否完成了所有接口方法的编写,保证规范落地。弥补单继承的局限

在不支持多继承的语言中,类可同时实现多个接口,从而获得多种行为能力,实现灵活的组合设计。任务实践:输出个人基本信息PARTFOUR任务实施:输出个人基本信息案例目标:综合运用核心语法本案例将串联变量声明、数据类型定义、函数封装与类的创建等ArkTS核心知识点,通过构建一个完整的个人信息展示页面,巩固基础语法的实际应用逻辑,理解从代码编写到界面渲染的完整流程。01.创建基础项目打开DevEcoStudio,选择标准模板,快速搭建ArkTS项目工程,配置基础工程环境。02.编写核心代码在Index.ets文件中,定义数据类和展示函数,将个人信息数据与UI组件进行绑定渲染。03.运行与调试启动本地模拟器或连接真机设备,编译运行项目,实时预览页面效果并进行细节优化。通过本次实践,我们将零散的语法点整合为完整的应用逻辑,为后续复杂应用开发打下坚实基础。代码详解(1/4):变量声明与基础数据类型variables.ts—TypeScript//字符串类型:用于存储文本信息constuserName:string="张三";letuserAge:number=25;letisStudent:boolean=false;//数组类型:存储同类型数据的有序集合lethobbies:string[]=["阅读","运动","编程"];声明关键字与类型注解使用const声明常量,let声明变量。通过`:type`语法为变量添加类型注解,在编译阶段检查类型安全,避免运行时错误。基础数据类型与数据结构涵盖字符串(`string`)、数字(`number`)、布尔值(`boolean`)等基础类型,以及数组类型来存储有序数据集。这些类型构成了程序中数据流转的基础单元。总结:通过强类型约束,我们构建了清晰、可维护的基础数据模型,为后续复杂的业务逻辑提供了可靠的数据支撑。代码详解(2/4):简单函数定义//计算出生年份的函数

functioncalculateBirthYear(age:number):number{

constcurrentYear:number=newDate().getFullYear();

returncurrentYear-age;

}该函数接收一个数字类型的年龄参数,通过获取当前年份并做减法运算,返回对应的出生年份。体现了单一职责的函数设计原则。//格式化个人信息的函数

functionformatPersonInfo(n:string,a:number,s:boolean):string{

return`${n},${a}岁,${s?"是学生":"不是学生"}`;

}接收姓名、年龄、学生状态三个参数,利用三元运算符动态判断状态,将信息拼接为规范的描述字符串,提升了数据展示的可读性。核心思想:通过函数封装具体的业务逻辑,不仅让代码结构更清晰,更实现了逻辑的复用,是现代编程中模块化思维的基础体现。代码详解(3/4):简单类定义Person.ts—TypeScriptClassDefinitionclassPerson{name:string;age:number;constructor(n:string,a:number){=n;this.age=a;}introduce():string{return`Hi,I'm${},${this.age}y.o.`;}getBirthYear():number{returncalculateBirthYear(this.age);}}该类封装了“人”的核心属性与行为,通过方法调用外部函数,展示了类与独立函

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论