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后台管理系统,接口环境配置

    https://coding.imooc.com/lesson/397.html#mid=31487

  2. Can‘t resolve ‘core-js/modules/es.symbol‘ in

    https://blog.csdn.net/guoqing2016/article/details/108639300?utm_medium=distribute.pc_relevant.none-t ...

  3. centos7进入单用户模式(忘记密码操作-真正解决方案)

    centos7密码忘记了,如何登录进去呢. 1.重新启动 2.按e进入以下界面:linux系统引导  3.在标记的如下位置行尾增加:rw init=/bin/sh  4.按Ctrl+x执行可进入单用户 ...

  4. 9 时序数据库M3DB架构与原理

    一.M3DB介绍 M3DB是Uber开源的一款分布式时序数据库,已在Uber内部使用多年.M3DB有以下特性: 分布式的时序数据库,可以水平扩展存储. 支持Pormetheus的查询语言PromQL, ...

  5. 状态: 失败 -测试失败: IO 错误: The Network Adapter could not establish the connection (CONNECTION_ID=BMRc/8PgR2+0i4PK2tnHQA==)

    1.问题 问题如标题所示,在使用Oracle SQL Developer连接时发现错误: 状态: 失败 -测试失败: IO 错误: The Network Adapter could not esta ...

  6. Shell-全局变量-export

  7. ChatGPT-NextWeb部署和调试打造属于自己的GPT

    首先我关注这个项目有一段时间了,不得不说作者和他的社区真的很猛! 首先这个项目截至目前已经有了40.9K的Start了,Fork也已经有了38.1K了,这个数据真的超级牛批了. 那么我们来看一下这款号 ...

  8. [转帖]缓存与存储的一致性策略:从 CPU 到分布式系统

    https://zhuanlan.zhihu.com/p/151745863 在计算机系统设计实践中,我们常常会遇到下图所示架构: 为了解决单个存储器读吞吐无法满足要求的问题,常常需要在存储器上面增加 ...

  9. [转帖]新一代垃圾回收器ZGC的探索与实践

    1. 引入 1.1 GC之痛 很多低延迟高可用Java服务的系统可用性经常受GC停顿的困扰. GC停顿指垃圾回收期间STW(Stop The World),当STW时,所有应用线程停止活动,等待GC停 ...

  10. Core 文件的简单学习

    背景 最近公司内经常出现jvm进程宕机的情况. 宕机之后没有产生jvm的dump文件.比如xxx.hprof 但是产生了 core.$pid的文件. 曾经在aarch64架构上宕机时曾经想学习一下co ...