初识ArkTS语言
ArkTS:是一门用于开发鸿蒙应用的编程语言。
ArkTS提供了声明式UI范式、状态管理支持等相应的能力,让开发者可以以更简洁、更自然的方式开发应用。
同时,它在保持TypeScript(简称TS)基本语法风格的基础上,进一步通过规范强化静态检查和分析,使得在程序运行之前的开发期能检测更多错误,提升代码健壮性,并实现更好的运行性能。
针对JavaScript(简称JS)/TS并发能力支持有限的问题,ArkTS对并发编程API和能力进行了增强。
ArkTS支持与JS/TS高效互操作,兼容JS/TS生态。
ArkTS设计理念
- 为更好地支持HarmonyOS应用的开发和运行,从Harmony OS NEXT Developer Preview 0版本开始,ArkTS在TS的基础上,进一步通过规范强化静态检查和分析,这样做有两个好处:许多错误在编译时可以被检测出来,不用等到运行时,这大大降低了代码运行错误的风险,有利于程序的健壮性;2.减少运行时的类型检查,从而降低了运行时负载,有助于提升执行性能。
- ArkTS保留了TS大部分的语法特性,这可以帮助开发者更容易上手ArkTS。同时,对于已有的标准TS代码,开发者仅需对少部分代码进行ArkTS语法适配,大部分代码可以直接复用。
- ArkTS支持与标准JS/TS的高效互操作,兼容JS/TS生态。HarmonyOS也提供了标准JS/TS的执行环境支持,在“更注重已有生态直接复用”的场景下,开发者可以选择使用标准JS/TS进行代码复用或开发,更方便兼容现有生态。
一、认识数据
编程语言的核心是处理 数据
三种常见的基础数据类型:
- string 字符串:描述信息
- number 数字:计算
- boolean 布尔:判断(真、假)
二、存储数据(变量、常量)
变量
变量:专门用来存储数据的容器
let 变量名:类型 = 值
let title:string = '我是天才交易员'
let price:number = 21.8
let isSelect:boolean = true
let title:string = '我是天才交易员'
title = '我是金融消费者'
console.log(title)
// 运行结果
我是金融消费者
常量
常量:用来存储数据(不可变)
const 常量名:类型 = 值
const PI:number = 3.1415926
const name:string = '刘德华'
命名规则
- 只能包含数字、字母、下划线、$、不能以数字开头
let num-1:number = 11 //错误
let num_1:number = 11 //正确
let num$:number = 11 //正确
let 1num:number = 11 //错误
- 不能使用内置的关键字或保留字 (比如 let、const)
let let:number = 100 //错误
let const:string = 'abc'//错误
- 严格区分大小写
let myName:string = '吴彦祖' //运行结果:吴彦祖
let myname:string = '彭于晏'//运行结果:彭于晏
三、数组
数组:是一个容器、可以存储多个数据
let 数组名:类型[] = [数据1,数据2,数据3,……]
let sum:number[] = [1,2,3,4,……]
let names:string[] = ['小红','小李',……]
let names:string[] = ['小红','小李','小梅','小晶','小莎','小莲',……]
注意:
- 数组指定的类型和存储的数据类型要必须一致,否则会报错
let names:string[] = ['小红','小李','小梅',500] //报错
- 数组中存储的每个数据都有自己的编号,编号从0开始(索引、下标)
// 利用有序的索引取数组的数据
数组名[索引]
let names:string[] = ['小红','小李','小梅','小晶','小莎','小莲']
console.log(names[2])
// 运行结果
// 小梅
四、函数
函数:是可以重复使用的代码块
函数有利于代码复用,不用重复编写相同的代码,提高开发效率
// 定义函数
function fn(){
//函数体
}
// 调用函数
fn()
函数的完整用法
根据我们传入不同的数据,进行处理,返回处理后的结果。
function 函数名(形参1:数据类型,形参2:数据类型){
编写代码对数据进行处理
return 处理后的结果
}
let 变量名:类型 = 函数名(实参1,实参2)
// 传入价格 和 数量 ,返回计算结果
// 1.苹果 2元/斤 ,买了3斤,多少钱
// 2.香蕉 4元/斤 ,买了4斤,多少钱
function sum(price:number,num:number){
// 1.处理数据
let result:number = price * num
// 2.返回结果
return result
}
let xiangjiao:number = sum(4,4)
let apple:number = sum(2,3)
console.log('香蕉价格:',xiangjiao)
console.log('苹果价格:',apple)
注意:形参和实参个数要一致
五、箭头函数
箭头函数是比普通函数 更简洁 的一种函数写法。
() => {
// 函数体
}
// 1.定义函数
let 函数名 = () => {
// 函数体
}
// 2.调用函数
函数名()
箭头函数的完整写法
// 1.定义函数
let 函数名 = (形参1:数据类型,形参2:数据类型) => {
// 函数体
// 1. 计算过程
// 2. 返回结果
return 计算的结果
}
// 2.调用函数
函数名(实参1,实参2)
// 传入价格 和 数量 ,返回计算结果
// 1.苹果 2元/斤 ,买了3斤,多少钱
// 2.香蕉 4元/斤 ,买了4斤,多少钱
let sum = (price:number,num:number) => {
// 1.处理数据
let result:number = price * num
// 2.返回结果
return result
}
let xiangjiao:number = sum(4,4)
let apple:number = sum(2,3)
console.log('香蕉价格:',xiangjiao)
console.log('苹果价格:',apple)
六、对象
作用:用于描述一个物体的特征和行为。
对象:是一个可以存储多个数据的容器。
let 对象名称:对象结构类型 = 值
1.通过interface接口约定 对象结构类型
interface 接口名 {
属性1:类型1
属性2:类型2
属性3:类型3
}
interface Person {
name:string
age:number
weight:number
}
2.定义对象并使用
let person:Person = {
name:'木力',
age:18,
weight:90
}
3.获取对象的属性值
对象名.属性值
// 获取年龄
person.age
对象 - 方法
方法作用:描述对象的具体行为
1.约定方法类型
interface 接口名称{
方法名:(参数:类型) => 返回值类型
}
interface Person{
dance:() => void
sing:(song:string) => void
}
2.添加方法(箭头函数)
let ym:Person = {
dance:() => {
console.log('杨幂说','我来跳个舞')
},
sing:(song:string) => {
console.log('杨幂说','我来跳个舞',song)
}
}
ym.dance()
ym.sing('爱的供养')
七、联合类型
联合类型是一种灵活的数据类型,它修饰的变量可以存储不同类型的数据。
let 变量:类型1 | 类型2 | 类型3 = 值
let judge:number | string = 100
judge = 'A'
联合类型还可以将变量值,约定在一组数据范围内进行选择。
let gender:'man' | 'woman' | 'secret'
八、枚举类型
枚举类型是一种特殊的数据类型,约定变量只能在一组数据范围内选择值。
1.定义枚举类型(常量列表)
enum 枚举名 {
常量1 = 值,
常量2 = 值,
……
}
enum ThemeColor {
Red = '#ff0f29',
Orange = '#ff7100',
Green = '#30b30e',
}
2.使用枚举类型,约束变量
let color:ThemeColor = ThemeColor.Red
console.log('主题颜色',color)
枚举类型的特点:
- 枚举类型是一种特殊的数据类型
- 约定变量也只能在一组数据范围内选择,提高可维护性