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 ...
随机推荐
- C++ tuple(STL tuple)模板用法详解
tuple 是C++ 11新引进的 build-in structure,但其实在其他语言中tuple的使用已经行之有年(e.g. Javascript和Python中都有tuple).C++ 11中 ...
- 开源:Taurus.DTS 微服务分布式任务框架,支持即时任务、延时任务、Cron表达式定时任务和广播任务。
前言: 在发布完:开源:Taurus.DTC 微服务分布式事务框架,支持 .Net 和 .Net Core 双系列版本,之后想想,好像除了事务外,感觉里面多了一个任务发布订阅的基础功能. 本想既然都有 ...
- 【有奖体验】AIGC小说创作大赛开启!通义千问X函数计算部署AI助手
一个 AI 助手到底能做什么? 可以书写小说 可以解析编写代码 可以鼓舞心灵 提供职业建议 还有更多能力需要您自己去探索.接下来我们将花费 5 分钟,基于函数计算X通义千问部署一个 AI 助手,帮你撰 ...
- java基础-常用类-day11
目录 1. 包装类 2. Integer类 3.util.date 4. java.sql.Date 5. SimpleDateFormat 6. Calendar 7. Math 8. String ...
- Vue第一篇 ES6的常用语法
01-变量的定义 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- SV task and function
内容 system verilog过程语句:自增和自减操作符 逻辑比较操作符 逻辑值为1bit inside语句 变量类型转换 强制类型转换:$cast() 变量位宽转换 变量符号位转换 for循环语 ...
- AMBA总线介绍-01
AMBA总线介绍 AMBA总线概述 AHB APB 不同IP之间的互连 1.系统总线简介 系统芯片中各个模块之间需要有接口连接,使用总线作为子系统之间共享的通信链路 优点:成本低,方便易用(通用协议, ...
- Laravel路由匹配
Route常规用法如下,特别是最后一个传参之后可以进行正则匹配,非常好用. //@后面内容为所要访问的方法 Route::get('foo', 'Photos\AdminController@meth ...
- Oracle12c新增max_idle_time参数的学习与感触
Oracle12c新增max_idle_time参数的学习与感触 TLDR 其实任何软件出了新版本.readme 是很重要的. 尤其是数据库, 涉及到底层问题的. 比如这次遇到的Oracle的max_ ...
- [粘贴]关于preparedStatement
作者:wuxinliulei链接:https://www.zhihu.com/question/37043270/answer/83914933来源:知乎著作权归作者所有.商业转载请联系作者获得授权, ...