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. 体验函数计算 FC 3.0,写测评赢取索尼头戴式耳机

    11月1日云栖大会,函数计算3.0全新升级,相对函数计算2.0,3.0版本突出易用性.高弹性,并且可以和更多阿里云服务无缝集成.业内首发神龙 Serverless GPU 架构,冷启动大幅优化,全链路 ...

  2. 14、SpringBoot-easyexcel导出excle

    系列导航 springBoot项目打jar包 1.springboot工程新建(单模块) 2.springboot创建多模块工程 3.springboot连接数据库 4.SpringBoot连接数据库 ...

  3. 【OpenVINO】基于 OpenVINO Python API 部署 RT-DETR 模型

    目录 1. RT-DETR 2. OpenVINO 3. 环境配置 3.1 模型下载环境 3.2 模型部署环境 4. 模型下载与转换 4.1 PaddlePaddle模型下载 4.2 IR模型转换 5 ...

  4. [转帖]一文带你搞懂xxl-job(分布式任务调度平台)

    https://zhuanlan.zhihu.com/p/625060354 前言 本篇文章主要记录项目中遇到的 xxl-job 的实战,希望能通过这篇文章告诉读者们什么是 xxl-job 以及怎么使 ...

  5. [转帖]Linux | crontab定时任务及开机自启项

    本文总结如何使用 crontab 创建定时任务及开启自启项 1. 本文基于 CentOS 7.9 系统所写. Updated: 2022 / 9 / 5 Linux | crontab定时任务及开机自 ...

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

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

  7. [转帖]springboot中使用skywalking实现日志追踪

    文章目录 SkyWalking分布式追踪系统 介绍 主要架构 环境 引入依赖 配置Log4j2 下载编译好的8.7.0版本包 使用探针实现日志追踪 启动脚本 启动Java服务 访问服务 使用UI 切换 ...

  8. [转帖]Docker限制容器的资源

      docker在默认运行容器的情况下,是不会对运行的容器进行资源限制的,在自己的实验环境的话是随便你怎么弄的,不过在生产中是一定会对docker运行的容器进行资源限制的,如果不限制的话在生产中会带来 ...

  9. [转帖]开源软件项目中BSD、MIT许可证合规问题探析

    https://www.allbrightlaw.com/CN/10475/3be2369275d19e9e.aspx   [摘要]本文将探析BSD开源许可证(Berkeley Software Di ...

  10. [转帖]@Autowired 和 @Resource 的区别

    @Autowired 和 @Resource 的区别 默认注入方式不同 @Autowired 默认的注入方式为byType(根据类型进行匹配),也就是说会优先根据接口类型去匹配并注入 Bean (接口 ...