首页
博客使用须知
Search
1
沉金工艺介绍
103 阅读
2
板载天线介绍
87 阅读
3
Python-童叟皆懂,一文涵盖你想知道的经典
84 阅读
4
「题解」航电ACM2001-计算两点间的距离
67 阅读
5
单词记忆背诵辅助工具
60 阅读
HarmonyOS
HarmonyOS入门
原创
原创工具
python系列
pip类
知识整理Py
c++
知识整理C
随笔
网页
概览
假日限定
默认分类
proj
登录
Search
标签搜索
原创
c++
题解
pip
python
工作室原创
软件
杭电ACM
NOI
HarmonyOS
pygame
windows
html
网页设计
版权
结构体
调试
安装
后端
开发语言
虹棠包
累计撰写
25
篇文章
累计收到
5
条评论
首页
栏目
HarmonyOS
HarmonyOS入门
原创
原创工具
python系列
pip类
知识整理Py
c++
知识整理C
随笔
网页
概览
假日限定
默认分类
proj
页面
博客使用须知
搜索到
2
篇与
的结果
2024-01-10
「鸿蒙入门」1_TS基础语法简述
{message type="info" content="本篇主要讲述的是TS的语法基础和TS在ArkTS中的应用(区别)如果您有足够的基础,可以跳过本篇"/}一、初识ArkTS语言ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集。因此,在学习ArkTS语言之前,建议开发者具备TS语言开发能力。当前,ArkTS在TS的基础上主要扩展了如下能力:基本语法:ArkTS定义了声明式UI描述、自定义组件和动态扩展UI元素的能力,再配合ArkUI开发框架中的系统组件及其相关的事件方法、属性方法等共同构成了UI开发的主体。状态管理:ArkTS提供了多维度的状态管理机制。在UI开发框架中,与UI相关联的数据可以在组件内使用,也可以在不同组件层级间传递,比如父子组件之间、爷孙组件之间,还可以在应用全局范围内传递或跨设备传递。另外,从数据的传递形式来看,可分为只读的单向传递和可变更的双向传递。开发者可以灵活地利用这些能力来实现数据和UI的联动。渲染控制:ArkTS提供了渲染控制的能力。条件渲染可根据应用的不同状态,渲染对应状态下的UI内容。循环渲染可从数据源中迭代获取数据,并在每次迭代过程中创建相应的组件。数据懒加载从数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。未来,ArkTS会结合应用开发/运行的需求持续演进,逐步提供并行和并发能力增强、系统类型增强、分布式开发范式等更多特性。{card-describe title="tips"}TypeScript 的定位是静态类型语言,在写代码阶段就能检查错误,而非运行阶段。类型系统是最好的文档,增加了代码的可读性和可维护性。{/card-describe}二、基本语法(一)定义格式:关键字 变量名:类型 = 值关键字:var、let、constvar myname1:string = "hongtang"//不具备块限制(类似于全局变量) let myname2:string = "hongtang"//对应块级作用域(类似于局部变量) const myname3:string = "hongtang"//表示常量类型:string、boolean、number、anylet mystring:string = "hongtang"//仅能存储字符串 let mybool:boolean = false//仅能存储布尔值 let mynumber:number = 123//仅能存储数字 let myany:any = "hongtang"//可存储任意类型定义单一类型数组方式let mylist1:Array<string> = ["ht0","ht1","ht2"]//用 Array<类型> 表示数组 let mylist2:string[] = ["ht3","ht4","ht5"]//用 类型[] 表示数组定义联合类型let mystrandnum:string | number = "a"//用 | 隔开表示多种类型 let mylist5:any = "hongtang"//可存储任意类型 let mylist3:Array<string | number> = ["ht0",123,"ht1"]//用 | 隔开表示能多种类型的数组 let mylist4:(string | number)[] = ["ht2",456,"ht3"]//用 ()和| 表示能多种类型的数组(二)枚举定义//无值 enum ht1{ "A","B","C" } //有值 enum ht1{ "A" = 1, "B" = 2, "C" = 3 }访问ht1.A ht2["A"]打印console.log(ht1.A)//在ArkTS开发环境下,仅能打印字符串类型 console.log(ht1.A.toString())//或强制转换为字符串类型后打印(三)对象定义//固定类型 let myinf1 = { name:"hongtang", age:18 }//无法再添加属性 //指定类型和可选类型 let myinf2:{name:string,age:number,location?:string} = { name:"hongtang", age:18 }//location?标识location属性可选,无法再添加属性 //指定接口 interface IOht{ name:string, age:number, location?:string, [propName:string]:any//表示可添加任意类型属性属性 } //实例化 let myinf3:IOht = { name:"hongtang", age:"18" }扩展属性并赋值myinf3.country = "China"(四)判断===和==的区别"2" == 2//在TS中,表示只判断值不判断类型,结果为true "1" === 1//在TS中,表示判断类型和值,结果为falseif_else判断let order_type:number = 3 if(order_type===1){ console.log("已付款") }else if(order_type===2){ console.log("已发货") }else{ console.log("已完成") }switc判断let order_type:number = 3 switch (order_type){ case 1: console.log("已付款"); break; case 2: console.log("已发货"); break; case 3: console.log("已完成"); break; default : console.log('默认') }(五)for循环let datalist:string[]= ["华为mate60","华为mate60Pro","华为nova"] for(let i=0;i<datalist.length;i++){ console.log(datalist[i]); }//定义i并规定初始值,满足条件,递增 console.log("-------------------") for(let i in datalist){ console.log(datalist[i]); }//此处i是从0开始增加的 console.log("-------------------") for(let i of datalist){ console.log(i); }//此处i即表示确切的内容而不是键(六)函数定义//普通函数 function test1(){ console.log("test1-普通") } //箭头函数 const test2 = ()=>{ console.log("test2-箭头") } //指定参,返回值 const test3 = (state:number):string=>{ let text:string = "" switch (state){ case 1: text = "已付款" break; case 2: text = "已发货" break; case 3: text = "已完成" break; default : text="默认" } return text }//state:传入参数名称,number:传入参数类型,string:返回参数类型调用test1() test2() test3(2)(七)类//定义类 class person{ public name:string; protected age:number; private country:string;//三种不同修饰词 constructor(name:string,age:number,country:string){ this.name = name; this.age = age; this.country = country; }//构造函数,赋值 //类的成员方法 say():string{ return this.name; } } //实例化 let p = new person("hongtang",18,"China"); console.log(p.name); //继承并添加项,即为person的子类 class student extends person{ schollName :string; constructor(name:string,age:number,country:string,school:string){ super(name,age,country); this.schollName = school; } say():string{ return this.name+"----"+this.age+"--"+this.schollName; } } //实例化 let s = new student("hongtang",18,"China","学校名字"); console.log(s.say());(八)接口interface IContainer{ render() } class Tabbar implements IContainer{ render(){ console.log("选项卡渲染") } } class MySwiper implements IContainer{ render(){ console.log("轮播渲染") } } function init(container:IContainer){ container.render() } init(new MySwiper()) init(new Tabbar())(九)泛型class Cache<T> { // 此处T可用任意一个大写字母表示 // private map:Map<string,T> = new Map() private map = {} setCache(key:string,value:T){ this.map[key] = value } getCache(key:string):T{ return this.map[key] } } let obj = new Cache<string>() obj.setCache("name","kerwin") console.log(obj.getCache("name"))(十)引用{tabs}{tabs-pane label="Index.ets"}import Obj,{test1,test2 as TEST2} from '../01-ts/typescript.ts' //Obj是可以直接随便取的 //{test1}必须和子文档中导出的名称一样,如果要起别名,参考test2 console.log(Obj.name) test1() TEST2() //日志: //... app log: hongtang //... app log: test1 //... app log: test2{/tabs-pane}{tabs-pane label="../01-ts/typescript.ts"}const obj = { name:"hongtang", age:18 } function test1(){ console.log("test1") } function test2(){ console.log("test2") } export default obj//默认导出 export {test1, test2}//按需导出{/tabs-pane}{/tabs}
2024年01月10日
31 阅读
0 评论
0 点赞
2024-01-10
「鸿蒙入门」0_前情提要
鸿蒙开发工具主要使用的是HUAWEI DevEco Studio(获取工具请单击链接下载,以下简称DevEco Studio),是基于IntelliJ IDEA Community开源版本打造,为运行在HarmonyOS和OpenHarmony系统上的应用和服务(以下简称应用/服务)提供一站式的开发平台。作为一款开发工具,除了具有基本的代码开发、编译构建及调测等功能外,DevEco Studio还具有如下特点:高效智能代码编辑:支持ArkTS、JS、C/C++等语言的代码高亮、代码智能补齐、代码错误检查、代码自动跳转、代码格式化、代码查找等功能,提升代码编写效率。更多详细信息,请参考编辑器使用技巧。低代码可视化开发:丰富的UI界面编辑能力,支持自由拖拽组件和可视化数据绑定,可快速预览效果,所见即所得;同时支持卡片的零代码开发,降低开发门槛和提升界面开发效率。更多详细信息,请参考使用低代码开发应用/服务。多端双向实时预览:支持UI界面代码的双向预览、实时预览、动态预览、组件预览以及多端设备预览,便于快速查看代码运行效果。更多详细信息,请参考使用预览器预览应用/服务界面效果。多端设备模拟仿真:提供HarmonyOS本地模拟器,支持手机等设备的模拟仿真,便捷获取调试环境。更多详细信息,请参考使用模拟器运行应用/服务。{card-describe title="tips"}具体的安装和环境搭建请参考官方开发文档。本系列将全程使用DevEco Studio工具。{/card-describe}
2024年01月10日
25 阅读
0 评论
0 点赞