HarmonyOS 开发入门(一)
HarmonyOS 开发入门(一)
日常逼逼叨
因为本人之前做过一些Android相关的程序开发,对移动端的开发兴趣比较浓厚,近期也了解到了一些关于华为HarmonyOS 4.0 的事件热点,结合黑马相关教学视频以及一些相关的技术博客,对HarmonyOS开发做一个知识总结,有任何说的不合理的地方,希望各位看官老爷批评指正
一 、开发语言(ArkTS)
ArkTS简介
ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript(简称TS)的基础上,匹配了鸿蒙的ArkUI框架,扩展了声明式UI、状态管理等相应的能力,让开发者以更简洁、更自然的方式开发跨端应用。了解ArkTS之前,我们需要先了解下ArkTS、TypeScript和JavaScript之间的关系。
- JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。
- TypeScript 是 JavaScript 的一个超集,它扩展了 JavaScript 的语法,通过在JavaScript的基础上添加静态类型定义构建而成,是一个开源的编程语言。
- ArkTS兼容TypeScript语言,拓展了声明式UI、状态管理、并发任务等能力,可以认为是TypeScript的超集。
由此可知,TypeScript是JavaScript的超集,ArkTS则是TypeScript的超集,他们的关系如下图所示。

ArkTS,TS语法简介
下述所有代码均可以在在线Ts playground 尝试运行
初始化变量
//确定数据类型
let msg: string ='hello' //string
let i: number =22 //number
let m: boolean =true //boolean
//any 不确定数据类型:ts不会进行数据类型检查
let msg: any ='hello'
msg=20
//union 联合类型 指定多种数据类型中的一种
let msg: string|number|boolean ='hello'
msg=20
//对象
let person ={'name':'tom','age':18}
console.log(person.name)
console.log(person['age'])
条件控制
let i: number = 15 //判定是不是偶数
if(i%2===0){
console.log(i+'是偶数')
}else{
console.log(i+'是奇数')
} let i: number = 0
if(i){
console.log(i)
}else{
console.log('---')
}
Ts == 与 ===
- 对于String, number这些基础类型,
==操作符会先把两边的变量进行类型强制转换成相同的类型再比较是否相等;===操作符则不会进行类型转换,而是直接进行比较。 - 对于array, object这些高级类型,
==和===是没有区别的,因为它们比较的是 “指针地址” 。 - 对于基础类型和高级类型,
==和===是有区别的;==操作符会先把高级类型转换为基础类型之后,进行值的比较;===操作符则不会进行转换,类型不同,直接返回false
也就是说,
==操作符只要求比较两个变量的值是否相等,===操作符则是要求两个变量的值和类型都要相同;类似地,!=操作符会去做类型强制转换,!==操作符则不会转换类型。Ts 空字符串,数字0,null,undefined,都被认定为 false,其他值都为true
- 对于String, number这些基础类型,
循环
//与其他语言循环基本类似
let i: number=10
for(let m=0;m<i;m++){
console.log(m)
} //数组
let pets: string[] =['cat','dog','duck'] //in 遍历得到的是数组的index
let pets: string[] =['cat','dog','duck']
for(const one in pets){
console.log(one)
} //of 遍历得到的是数组的元素
for(const one of pets){
console.log(one)
}
函数
//无返回值
function start(name: string): void{
console.log(name+' hello')
}
start('jerry') //有返回值
function sum(a: number,b: number): number{
return a+b;
}
let res=sum(1,2)
console.log('1+2='+res) //可变参数
function start(name?: string): void {
if(name){
name=name;
}else{
name='访客';
} console.log(name+'登录')
} start()
start('jerry')
接口和类
// 定义枚举
enum Msg{
HI = 'Hi',
HELLO = 'Hello'
}
//定义接口,抽象方法接收枚举参数
interface A {say(msg: Msg): void }
//实现接口
class B implements A {
say(msg: Msg): void {
console.log(msg + ', I am B')
}
}
// 初始化对象
let a: A = new B()// 调用方法,传递枚举参数
a.say(Msg.HI)
//类
// 定义矩形类
class Rectangle {
//成员变量
private width: number
private length: number // 构造函数
constructor(width: number, length: number) {
this.width = width
this.length = length
}
// 成员方法
public area(): number {
return this.width * this.length
}
}
//定义正方形
class Square extends Rectangle {
constructor(side: number) {
super(side, side)
} //调用父类构造
}
let s = new Square(10)
console.log('正方形面积为:' + s.area())
模块抽取
应用复杂时,我们可以把通用功能抽取到单独的ts文件中,每个文件都是一个模块 (module)。
模块可以相互加载,提高代码复用性。rectangle.ts
//定义矩形类,并通过export导出
export class Rectangle {//成员变量
public width: number
public length: number
//构造函数
constructor(width: number, length: number) {
this.width = width
this.length = length
}
} //定义工具方法,求矩形面积,并通过export导出
export function area(rec: Rectangle): number {
return rec.width * rec.length
} index.ts
//通过import语法导入,from后面写文件的地址
import { Rectangle, area } from '../rectangle
//创建Rectangle对象
let r = new Rectangle(10, 20)
//调用area万法
console.log('面积为: ' + area(r))
第一期就先说这么多,我在努力加更的...
特别鸣谢
- 黑马程序员 HarmonyOS开发教程
- 鸿蒙开发之ArkTS基础知识
HarmonyOS 开发入门(一)的更多相关文章
- 鸿蒙OS前端开发入门指南:网络图片_Image渲染网络图片
目录: 1.开启明文传输 2.权限申请 3.引入http插件 4.案例展示 5.<鸿蒙OS前端开发入门指南>文章合集 开启明文传输 在config.json配置文件添加如下配置(如果不开启 ...
- 最全华为鸿蒙 HarmonyOS 开发资料汇总
开发 本示例基于 OpenHarmony 下的 JavaScript UI 框架,进行项目目录解读,JS FA.常用和自定义组件.用户交互.JS 动画的实现,通过本示例可以基本了解和学习到 JavaS ...
- HarmonyOS小白入门设备开发的“芯”路历程
HarmonyOS Connect设备开发,相信不少刚入门的开发者都被这些问题所困扰,面对五花八门的开发板不知道该怎么选取?芯片.模组.开发板傻傻分不清?如何使用代码控制开发板? 本期,我们将一一为你 ...
- openresty 前端开发入门五之Mysql篇
openresty 前端开发入门五之Mysql篇 这章主要演示怎么通过lua连接mysql,并根据用户输入的name从mysql获取数据,并返回给用户 操作mysql主要用到了lua-resty-my ...
- java WEB开发入门
WEB开发入门 1 进入web JAVASE:标准- standard JAVA桌面程序 GUI SOCKET JAVAEE:企业-浏览器控制 web 2 软件结构 C/S :client ...
- [译]:Xamarin.Android开发入门——Hello,Android Multiscreen深入理解
原文链接:Hello, Android Multiscreen_DeepDive. 译文链接:Xamarin.Android开发入门--Hello,Android Multiscreen深入理解. 本 ...
- [译]:Xamarin.Android开发入门——Hello,Android深入理解
返回索引目录 原文链接:Hello, Android_DeepDive. 译文链接:Xamarin.Android开发入门--Hello,Android深入理解 本部分介绍利用Xamarin开发And ...
- [译]:Xamarin.Android开发入门——Hello,Android快速上手
返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...
- VR原理讲解及开发入门
本文是作者obuil根据多年心得专门为想要入门的VR开发者所写,由52VR网站提供支持. 1. VR沉浸感和交互作用产生的原理: 在之前,我们观看一个虚拟的创造内容是通过平面显示器的,52VR ...
- Eclipse_luna_J2EE_For_JS+tomcat8.0环境搭建、配置、开发入门
一.所有需要的软件.插件等下载地址 J2SE的官方下载路径:http://www.oracle.com/technetwork/java/javase/downloads/index.html Ecl ...
随机推荐
- 2016年第七届蓝桥杯【C++省赛B组】
第一题:煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100层,共有多少 ...
- 分布式搜索引擎 Elasticsearch 的架构分析
一.写在前面 ES(Elasticsearch下文统一称为ES)越来越多的企业在业务场景是使用ES存储自己的非结构化数据,例如电商业务实现商品站内搜索,数据指标分析,日志分析等,ES作为传统关系型数据 ...
- SAE 联合乘云至达与谱尼测试携手共同抗疫
作者 | 营火.计缘.张祖旺 前言 当前疫情形势依然严峻,各行各业众志成城,携手抗疫.新冠病毒核酸检测筛查是疫情防控的重要一环,如何应对疫情的不断反复,以及每日数以万计的核酸检测结果成为每个检测公司的 ...
- vue中class样式与内联样式
(1):style使用 <div class="score" :style="{ color: colorComputed(item.status) }" ...
- 每天学五分钟 Liunx 101 | 存储篇:LVM
LVM LVM(Logical Volume Manager),逻辑卷管理器.一种高级文件系统管理方式,它可以动态扩展文件系统. LVM 的示意图如下所示:
- pmp考试巩固知识点
1.冲刺评审会是需要相关的干系人参加的,在冲刺评审会上干系人可以审查并澄清角色.责任和管理模式2.采购中的争议,往往找合同和SOW,SOW是对需要采购的详细范围的描述,与供应商在可交付成果方面有争议时 ...
- 他凌晨1:30给我开源的游戏加了UI|模拟龙生,挂机冒险
一.前言 新年就要到了,祝大家新的一年: 龙行龘龘, 前程朤朤! 白泽花了点时间,用 800 行 Go 代码写了一个控制台的小游戏:<模拟龙生>,在游戏中你将模拟一条新生的巨龙,开始无尽的 ...
- 聊聊x86计算机启动发生的事?
大家好,我是呼噜噜,最近在看linux早期内核0.12的源码,突然想到一个困扰自己好久的问题:当我们按下电源键,计算机发生了什么?神秘地址0x7C00究竟是什么?操作系统又是如何被加载到硬件中的?带着 ...
- [转帖]彻底搞明白 GB2312、GBK 和 GB18030
https://zhuanlan.zhihu.com/p/453675608 日常工作的过程中,关于字符编码的问题经常让人头疼不已,这篇文章就来捋一捋关于 GB2312.GBK.GB18030 相关的 ...
- [转帖]038-拯救大兵瑞恩之 TiDB 如何在 TiKV 损坏的情况下恢复
https://tidb.net/blog/4b5451bb?utm_source=tidb-community&utm_medium=referral&utm_campaign=re ...