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 尝试运行

  1. 初始化变量

    //确定数据类型
    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'])
  2. 条件控制

    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

  3. 循环

    //与其他语言循环基本类似
    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)
    }
  4. 函数

    //无返回值
    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')
  5. 接口和类

    // 定义枚举
    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())
  6. 模块抽取

    应用复杂时,我们可以把通用功能抽取到单独的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))

    第一期就先说这么多,我在努力加更的...


特别鸣谢
  1. 黑马程序员 HarmonyOS开发教程
  2. 鸿蒙开发之ArkTS基础知识

HarmonyOS 开发入门(一)的更多相关文章

  1. 鸿蒙OS前端开发入门指南:网络图片_Image渲染网络图片

    目录: 1.开启明文传输 2.权限申请 3.引入http插件 4.案例展示 5.<鸿蒙OS前端开发入门指南>文章合集 开启明文传输 在config.json配置文件添加如下配置(如果不开启 ...

  2. 最全华为鸿蒙 HarmonyOS 开发资料汇总

    开发 本示例基于 OpenHarmony 下的 JavaScript UI 框架,进行项目目录解读,JS FA.常用和自定义组件.用户交互.JS 动画的实现,通过本示例可以基本了解和学习到 JavaS ...

  3. HarmonyOS小白入门设备开发的“芯”路历程

    HarmonyOS Connect设备开发,相信不少刚入门的开发者都被这些问题所困扰,面对五花八门的开发板不知道该怎么选取?芯片.模组.开发板傻傻分不清?如何使用代码控制开发板? 本期,我们将一一为你 ...

  4. openresty 前端开发入门五之Mysql篇

    openresty 前端开发入门五之Mysql篇 这章主要演示怎么通过lua连接mysql,并根据用户输入的name从mysql获取数据,并返回给用户 操作mysql主要用到了lua-resty-my ...

  5. java WEB开发入门

    WEB开发入门 1 进入web JAVASE:标准- standard   JAVA桌面程序 GUI    SOCKET JAVAEE:企业-浏览器控制  web 2 软件结构 C/S :client ...

  6. [译]:Xamarin.Android开发入门——Hello,Android Multiscreen深入理解

    原文链接:Hello, Android Multiscreen_DeepDive. 译文链接:Xamarin.Android开发入门--Hello,Android Multiscreen深入理解. 本 ...

  7. [译]:Xamarin.Android开发入门——Hello,Android深入理解

    返回索引目录 原文链接:Hello, Android_DeepDive. 译文链接:Xamarin.Android开发入门--Hello,Android深入理解 本部分介绍利用Xamarin开发And ...

  8. [译]:Xamarin.Android开发入门——Hello,Android快速上手

    返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...

  9. VR原理讲解及开发入门

    本文是作者obuil根据多年心得专门为想要入门的VR开发者所写,由52VR网站提供支持.   1. VR沉浸感和交互作用产生的原理:   在之前,我们观看一个虚拟的创造内容是通过平面显示器的,52VR ...

  10. Eclipse_luna_J2EE_For_JS+tomcat8.0环境搭建、配置、开发入门

    一.所有需要的软件.插件等下载地址 J2SE的官方下载路径:http://www.oracle.com/technetwork/java/javase/downloads/index.html Ecl ...

随机推荐

  1. vivo 悟空活动中台 - 微组件状态管理(下)

    本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/1DzTYIExVbK0uE_Oc7IHYw作者:悟空中台研发团队 [悟空活动中台]系列往期精 ...

  2. java获取部门树的方法实例

    开发中如何获取一个树结构是非常常见的需求,本示例演示一下该功能如何实现. 1.数据准备(mysql) CREATE TABLE `dept` ( `dept_id` int NOT NULL AUTO ...

  3. springboot 实现接收前端发来的图片和视频以及在页面上展示图片和视频

    springboot 实现接收前端发来的图片和视频以及在页面上展示图片和视频 一.效果: 1.上传图片 2.显示上传的图片 3.上传的视频 4.显示上传的视频 二.代码 没依赖特殊的包,引入sprin ...

  4. mysql备份恢复总结

    mysqldump备份注:例子中的语句都是在mysql5.6下执行------------------基础------------------------一.修改my.cnf文件 vi /etc/my ...

  5. win32com操作word API精讲 第八集 Range和Selection的区别

    本课程<win32com操作word API精讲&项目实战>以视频为主,文字为辅,公众号ID:一灯编程 众所周知,在word编程中Range和Selection都能实现范围的选中, ...

  6. secure boot(三)secure boot的签名和验签方案

    简介 FIT 格式支持存储镜像的hash值,并且在加载镜像时会校验hash值.这可以保护镜像免受破坏,但是,它并不能保护镜像不被替换. 而如果对hash值使用私钥签名,在加载镜像时使用公钥验签则可以保 ...

  7. python之十进制、二进制、八进制、十六进制转换

    数字处理的时候偶尔会遇到一些进制的转换,以下提供一些进制转换的方法 一.十进制转化成二进制 使用bin()函数 1 x=10 2 print(bin(x)) 二.十进制转化为八进制 使用oct()函数 ...

  8. 用线性二次模型建模大型数据中心,基于 MPC 进行冷却控制

    目录 一个总述 reviews 0 abstract 1 intro 2 related work 3 DC cooling(问题定义) 4 MPC(method) 4.1 Model structu ...

  9. Julia编程基础

    技术背景 Julia目前来说算是一个比较冷门的编程语言,主要是因为它所针对的应用场景实在是比较有限,Julia更注重于科学计算领域的应用.而Julia最大的特点,就是官方所宣传的:拥有C的性能,且可以 ...

  10. [转帖]金仓数据库KingbaseES V8R6 中unlogged表

    KingbaseESV8R6有一种表称为unlogged,在该表新建的索引也属于unlogged.和普通表的区别是,对该表进行DML操作时候不将该表的变更记录变更写入到wal文件中.在数据库异常关机或 ...