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. 牛客 | 小G的约数引起的对于 整数分块 学习

    整除分块是个啥:要求\(∑_{i = 1}^n{n/i}\) 的值,这时候暴力需要O(n)的时间.由于这个区间是连续的,且'/'是向下取整,当i不能整除k时,n/i会等于最小的i(也就是区间最左边的值 ...

  2. uniapp解决图形验证码问题及arraybuffer二进制转base64格式图片

    https://www.cnblogs.com/huihuihero/p/13183031.html

  3. C++跨DLL内存所有权问题探幽(三)导致堆问题的可能性

    0xC0000374: 堆已损坏. (参数: 0x00007FFA1E9787F0). _Mem 是 nullptr 这里提供一个可能性,不一定是内存所属地址冲突的问题,除了MT和 MD编译,还有可能 ...

  4. 【Qt】开源一键代码开光神器,一行代码给你的项目施加祝福,减少Bug

    年底啦,没什么项目,想摸鱼划水没见到什么好玩的东西,看到有人分享这个,直接做个库来玩下,之后说不定会嵌到公司的项目里面去.... 效果如下,佛光普照! 输入也只需要一行命令 magic_spells: ...

  5. MySQL 覆盖索引详解

    本文转载自:MySQL 覆盖索引详解,作者 Sevn 1. 什么是索引? 索引(在 MySQL 中也叫"键key")是存储引擎快速找到记录的一种数据结构,通俗来说类似书本的目录. ...

  6. Apache ShardingSphere 实现分库分表及读写分离

    本文为博主原创,未经允许不得转载: 项目demo 源码地址:https://gitee.com/xiangbaxiang/apache-shardingjdbc 1. 创建Maven项目,并配置 po ...

  7. 【TouchGFX】Callback

    回调函数模板定义 单参数回调函数模板 实现回调函数接口: 实现合法性检查接口: 实现执行接口: 按键触发回调实现 定义回调数据结构对象 使用回调数据结构构造函数 执行接口实现 整个切换机制的管理主体对 ...

  8. 【C++】static 静态成员

    静态成员 静态成员包括静态数据成员和静态成员函数,提供了同类对象间数据成员的共享机制 静态成员不是某个对象的成员,是类所有对象的共享成员,只建立一个成员副本 静态成员的定义与引用 定义格式:stati ...

  9. [转帖]JDK8使用G1 垃圾回收器能解决大问题吗?

    https://zhuanlan.zhihu.com/p/458098236 G1 垃圾回收器真的不行吗? 本文想突出两个问题: 解决问题的思路:从最原始的角度去思考,问题的本身是因为缓存数据导致的G ...

  10. [转帖]前端安全(同源策略、XSS攻击、CSRF攻击)

    https://juejin.cn/post/6844904158697357319 同源策略(Same-origin policy) 如果两个 URL 的协议.域名和端口都相同,我们就称这两个 UR ...