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. vue学习笔记 十六、params方式带参数的页面跳转

    系列导航 vue学习笔记 一.环境搭建 vue学习笔记 二.环境搭建+项目创建 vue学习笔记 三.文件和目录结构 vue学习笔记 四.定义组件(组件基本结构) vue学习笔记 五.创建子组件实例 v ...

  2. nextTick使用

  3. 图片与Base64编码相互转换、优势分析和技术实现

    在Web开发中,图片与Base64编码的相互转换是一个非常实用的技能.图片 Base64编码是将图片文件转换为字符串格式,以便于在网络上传输和存储.本文将详细介绍图片与Base64编码的转换方法,以及 ...

  4. Ubuntu安装jdk的步骤

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  5. 分享Go书籍-《Go Web编程》

    大家好,我是沙漠尽头的狼. 最近几天在看一本Go的书籍,看了100来页,感觉不错,分享给大家​.​ 书籍基本信息 书籍信息: 书名:Go Web编程 作 者:(新加坡)郑兆雄(Sau Sheong C ...

  6. Cortex-M3内核介绍

    目录 Cortex Vendor - ARM介绍 ARM主要提供指令集,需要授权 ARM使用的RSIC结构,功耗比较低 Cortex M3整体架构 核心是Processor Core - 包含寄存器和 ...

  7. SpringBoot3集成Zookeeper

    标签:Zookeeper3.8 ,Curator5.5: 一.简介 ZooKeeper是一个集中的服务,用于维护配置信息.命名.提供分布式同步.提供组服务.分布式应用程序以某种形式使用所有这些类型的服 ...

  8. [转帖]一文说清 Linux System Load

    https://zhuanlan.zhihu.com/p/447661302 双十一压测过程中,常见的问题之一就是load 飙高,通常这个时候业务上都有受影响,比如服务rt飙高,比如机器无法登录,比如 ...

  9. [转帖]ext4的fsync性能和nodelalloc参数的分析

    原文:http://blog.thinksrc.com/?p=189001 感叹归感叹,发泄完了还得继续过. 前几天忙的不可开交,周报上面竟然能列出11项,想想以前在T公司时候的清闲,现在的老板的真幸 ...

  10. [转帖]JMETER结果分析

    https://www.cnblogs.com/a00ium/p/10462892.html 我相信你同意:有很多方法可以收集和解释JMeter结果,你会感到迷茫. 嗯,看完这篇文章后,您将了解收集和 ...