HarmonyOS NEXT 实战系列01-ArkTS基础

简介: ArkTS是HarmonyOS应用开发的首选语言,基于TypeScript扩展而成,保留了TS风格并强化静态检查与分析能力,提升程序稳定性和性能。它支持声明式UI开发、状态管理等功能,简化应用构建。语法涵盖变量、常量、数组、对象、语句(如if、switch)、函数(含箭头函数与泛型)、类和模块等特性,同时提供联合类型、字面量联合类型及枚举类型等丰富类型支持,助力开发者高效编写高质量代码。

ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,保持了TS的基本风格,同时通过规范定义强化开发期静态检查和分析,提升程序执行稳定性和性能。

ArkTS提供了声明式UI范式、状态管理、渲染控制等相应的能力,让开发者能够以更简洁、更自然的方式开发应用。

  1. ArkTS-语法-变量&常量
    ① 变量

// 字符串
let name: string = 'Jack'
name = 'Rose'
// 数字
let age: number = 20
age = 21
// 布尔
let isLogin: boolean = false
isLogin = true
以关键字let开头的声明引入变量,该变量在程序执行期间可以具有不同的值。
② 注释

// 1. 单行注释
/ 2. 块注释 /
解释代码的功能,提高代码的可读性和可维护性。
③ 输出

console.log('名字', name)
开发者用于日志记录和调试目的。
④ 常量

const PI: number = 3.14
// PI = 2
以关键字const开头的声明引入只读常量,该常量只能被赋值一次。

  1. ArkTS-语法-数组&对象
    ① 定义数组

// 定义数组
let nameList: sting[] = ['Jack', 'Rose', 'James' ]
// 获取元素
console.log('名字', nameList[2])
数组中第一个元素的索引为0
② 定义对象

// 约定接口
interface Person {
// 属性名: 属性值
name: string
age: number
}

// 定义对象
let rose: Person = {
name: 'Rose',
age: 18
}

// 访问对象属性
console.log('名字', rose.name)
console.log('年纪', rose.age)

let jack: Person = {
name: 'Jack',
age: 20
}
console.log('名字', jack.name)
console.log('年纪', jack.age)

通过接口约定对象结构

  1. ArkTS-语法-语句
    ① If 语句

let isLogin: boolean = true
if (isLogin) {
console.log('状态', '已登录')
}

// if (condition1) {
// } else if (condition2) {
// } else {
// }
if语句用于需要根据逻辑条件执行不同语句的场景。
② Switch 语句

// A 优 B 良 C 及格 D 差
let level: string = 'B'
switch (level) {
case 'A':
console.log('成绩', '优')
break;
case 'B':
console.log('成绩', '良')
break;
case 'C':
console.log('成绩', '及格')
break;
case 'D':
console.log('成绩', '差')
break;
default:
console.log('成绩', '未知')
}

如果switch表达式的值等于某个label的值,则执行相应的语句。
③ 条件表达式

let isLogin: boolean = true
let statusText = isLogin ? '已登录' : '未登录'
console.log('状态', statusText)
条件表达式由第一个表达式的布尔值来决定返回其它两个表达式中的哪一个。
④ For 语句

let sum = 0
// i ++ ---> i自加1
for (let i = 0; i < 10; i++) {
// += i ---> sum自加i
sum += i
}
console.log('累加', sum)
for语句会被重复执行,直到循环退出语句值为false。
⑤ While 语句

let i = 0
let sum = 0
while (i < 10) {
sum += i
i++
}
console.log('累加', sum)
只要循环条件为真值,while语句就会执行对应语句。

  1. ArkTS-语法-函数
    ① 函数声明

function add(x: number, y: number): number {
return x + y
}
// 调用
const result = add(10, 20)
console.log('结果', 'result')
函数声明引入一个函数,包含其名称、参数列表、返回类型和函数体。
② 可选参数

function say(name?: string) {
if (name) {
console.log('hi', name)
} else {
console.log('hi')
}
}
// name?: string, age· number 不允许默认参后还有其他参数
可选参数的格式可为name?: Type。
function say(name: string = 'Jack') {
console.log('hi', name)
}
如果在函数调用中这个参数被省略了,则会使用此参数的默认值作为实参。
③ 返回类型

// 显式指定返回类型
function foo(): string { return 'foo' }
// 推断返回类型为 string
function goo() { return 'goo' }

// void 代表不需要 return 语句
function hi1() { console.log('hi') }
function hi2(): void { console.log('hi') }
不需要返回值的函数的返回类型可以显式指定为void或省略标注。
④ 箭头函数

let add = (x: number, y: number): number => {
return x + y
}
// 等价,如果只有一句
let add1 = (x: number, y: number) => x + y
表达式可以指定为箭头函数,使表达更简短。
⑤ 函数类型

let add: (x: number, y: number) => number = (x, y) => x + y
可以给变量指定函数类型,用来约束函数。

  1. ArkTS-语法-类

复用性:可以通过构造函数或类创建多个具有相同结构的对象。
封装性:可以更方便地实现私有成员和方法。
继承性:易于扩展,可以创建复杂的继承关系。
① 声明类和创建实例

class Person {
// 字段
name: string = '';
surname: string = '';

// 构造函数
constructor(n: string, sn: string) {
this.name = n;
this.surname = sn;
}

// 方法
fullName(): string {
// this 当前实例
return this.name + ' ' + this.surname;
}
}

const person = new Person('Lebron', 'James')
console.log('全名', person.fullName())

const person2 = new Person('James', 'Harden')
console.log('全名', person2.fullName())

类声明引入一个新类型,并定义其字段、方法和构造函数。
② 可见性修饰符

class Person {
public name: string = ''
private age: number = 0
}

const person = new Person()
person.name = 'Jack'
// Property 'age' is private and only accessible within class 'Person'
// person.age = 18
class BasePerson {
protected name: string = ''
private age: number = 0
}

// 继承
class Chinese extends BasePerson {
test() {
this.name = 'Jack'
// Property 'age' is private and only accessible within class 'BasePerson'
// this.age = 18
}
}

const chinese = new Chinese()
// Property 'name' is protected and only accessible within class 'BasePerson' and its subclasses
// chinese.name = 'Jack'

可见性修饰符包括:private、protected和public。默认可见性为public。

  1. ArkTS-语法-泛型
    // 1. 接口
    interface Result {
    message: string
    code: number
    data: T
    }

interface User {
id: number
token: string
}

const user: Result = {
message: 'success',
code: 200,
data: {
id: 10086,
token: 'mock_token'
}
}

// 2. 类
class MockArray {
push(item: T) {
}
}

const arr = new MockArray()
arr.push('Jack')
// Argument of type 'number' is not assignable to parameter of type 'string'
// arr.push(18)

// 3. 函数
function last(arr: T[]): T {
return arr[arr.length - 1];
}
const lastItem = last(['Jack', 'Rose'])

泛型类型和接口、类、函数允许创建的代码在各种类型上运行,而不仅支持单一类型。

  1. ArkTS-语法-模块
    每个模块都有其自己的作用域,即,在模块中创建的任何声明(变量、函数、类等)在该模块之外都不可见,除非它们被显式导出。

① 导出

export const count = 100
export class Person {
name: string = ''
age: number = 0
}
export let per = new Person()
export const add = (x: number, y: number) => x + y
可以使用关键字export导出顶层的声明。
② 导入

// 指定成员导入
import { count, Person, per, add } from './test.ets'
// 全部导入
import * as Test from '.test1.ets'
// 成员指定别名
import { add: add2 } from '.test2.ets'
导入从其他模块导出的实体,并在当前模块中提供其绑定。

  1. ArkTS-语法-其他类型
    ① 联合类型

let score: number | string = 100
let scoreList: (number | string )[] = [ 100, '99' ]
联合类型包含了变量可能的所有类型。
② 字面量联合类型

type MyDirection = 'Up' | 'Down' | 'Left' | 'Right'
let changeDirection = (d: MyDirection) => {
}
changeDirection('Up')
更具体的一组可选值类型。
③ 枚举类型

// 默认是 0 开始
enum ColorSet { Red, Green, Blue }
let c: ColorSet = ColorSet.Red;
// 可以显式设置枚举常量的值
enum ColorSet { White = 0xFF, Grey = 0x7F, Black = 0x00 }
let c: ColorSet = ColorSet.Black;
预先定义的一组命名值的值类型,更有含义,可读性好

目录
打赏
0
5
5
0
28
分享
相关文章
鸿蒙开发:ArkTs数据类型
最后一点是,ArkTS不支持any和unknown类型,需要显式指定具体类型,否则会报异常,具体原因是,这是ArkTS的特性之一,那就是使用静态类型;如果程序采用静态类型,即所有类型在编译时都是已知的,那么开发者就能够容易理解代码中使用了哪些数据结构。同时,由于所有类型在程序实际运行前都是已知的,编译器可以提前验证代码的正确性,从而可以减少运行时的类型检查,有助于提升性能。
鸿蒙开发:ArkTs数据类型
HarmonyOS NEXT 实战系列09-生命周期
页面与组件生命周期介绍:页面生命周期(@Entry装饰)包含onPageShow、onPageHide、onBackPress等接口,分别在页面显示、隐藏和返回按钮点击时触发;组件生命周期(@Component装饰)包含aboutToAppear和aboutToDisappear,在组件创建与销毁时回调。示例代码展示了生命周期函数的使用场景及执行时机,帮助开发者更好地管理页面和组件状态。
HarmonyOS NEXT 实战系列09-生命周期
鸿蒙开发:ArkTs字符串string
字符串类型是开发中非常重要的一个数据类型,除了上述的方法概述之外,还有String对象,正则等其他的用处,我们放到以后得篇章中讲述。
49 19
HarmonyOS NEXT 实战系列10-网络通信
本文介绍了网络通信相关知识,包括HTTP协议的工作原理、鸿蒙系统中HTTP模块的使用方法、Promise异步操作处理机制及async/await语法糖的应用,以及JSON数据格式的语法规则与转换方法。重点讲解了HTTP请求响应流程、鸿蒙开发中的网络权限申请与代码实现、Promise三种状态及创建方式,并通过示例说明异步编程技巧和JSON在数据传递中的应用。
24 10
|
2天前
|
HarmonyOS NEXT 实战系列-综合案例新闻页
本示例展示了如何通过 `ForEach` 遍历数据并结合 HTTP 请求动态渲染新闻列表。首先定义了 `News` 接口描述数据结构,接着在组件中使用 `List` 和 `ForEach` 渲染新闻项,包含标题、来源、评论数、时间和图片等信息。同时,通过 `http.createHttp()` 获取远程数据并更新列表。代码结构清晰,适配动态数据展示需求。
HarmonyOS ArkTS声明式UI开发实战教程
本文深入探讨了ArkTS作为HarmonyOS生态中新一代声明式UI开发框架的优势与应用。首先对比了声明式与命令式开发的区别,展示了ArkTS如何通过直观高效的代码提升可维护性。接着分析了其核心三要素:数据驱动、组件化和状态管理,并通过具体案例解析布局体系、交互组件开发技巧及复杂状态管理方案。最后,通过构建完整TODO应用实战,结合调试优化指南,帮助开发者掌握声明式UI设计精髓,感受ArkTS的独特魅力。文章鼓励读者通过“破坏性实验”建立声明式编程思维,共同推动HarmonyOS生态发展。
20 3
uniapp 极速上手鸿蒙开发
uniapp 自版本 `4.28.2024092502` 起支持鸿蒙应用开发,现版本 `4.36.2024112817` 同时支持鸿蒙应用和元服务开发。本文介绍使用 HBuilderX 4.24+ 和 DevEco Studio 进行环境配置、项目创建及运行的详细步骤,涵盖从 AGC 平台新建项目、配置证书到最终运行项目的全流程,帮助开发者快速上手鸿蒙开发。注意:HBuilderX 4.31+ 构建的鸿蒙运行包不支持 x86_64 平台,需使用真机调试。
114 85
uniapp 极速上手鸿蒙开发
|
6天前
鸿蒙开发:wrapBuilder传递参数
本文,主要简单了介绍了一下,非UI使用的情况下,wrapBuilder传递数据问题,除了以上的方式之外,还有其它的方式可以实现,在实际的开发中,还是具体问题具体分析。
81 61
鸿蒙开发:wrapBuilder传递参数
|
5天前
|
鸿蒙开发:自定义一个搜索模版
这样的一个模版,可以简单的分为,三个部分,分别是上边的搜索框,中间的历史搜索和下边的热门搜索,搜索框,我们直接可以使用系统的组件Search,历史搜索,由于是内容不一的搜索的内容,这里使用弹性布局Flex,下边的热门搜索,条目规格一致,这里我们直接使用Grid网格组件。
49 23
鸿蒙开发:自定义一个搜索模版
鸿蒙开发:ArkTs语言注释
关于注释,有一点需要注意,那就是,注释,不会被编译器或解释器执行,而本小节的重点并不是简单的教大家注释如何去写,而是在实际的项目中,我们能够真正的把注释投入到实际的开发中。
44 18
鸿蒙开发:ArkTs语言注释

热门文章

最新文章

  • 1
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    27
  • 2
    uniapp 极速上手鸿蒙开发
    114
  • 3
    【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
    27
  • 4
    EMAS 性能分析全面适配HarmonyOS NEXT,开启原生应用性能优化新纪元
    27
  • 5
    鸿蒙开发:了解@Builder装饰器
    26
  • 6
    鸿蒙开发:wrapBuilder传递参数
    10
  • 7
    鸿蒙web加载本地网页资源异常
    12
  • 8
    【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
    11
  • 9
    鸿蒙H5离线包技术分享
    4
  • 10
    【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
    10
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等