王学岗鸿蒙开发(北向)——————(三)基于新版本ArkTS核心语法

1,API版本11 和12与之前的版本差别很大

字符串的拼接

复制代码
function add(x:string,y:string):string{
  let z : string = '${x}${y}';
  return z;
}

函数默认值的写法

复制代码
function add(x:string,y:string = "asdf"):string{
  let z : string = '${x}${y}';
  return z;
}

参数多类型的写法

复制代码
function f6(x:number | string):void{
  
}

调用

复制代码
  f6("?asd")
    f6(10)

不确定参数传参

复制代码
function sum(...numbers:number[]):number{
  let result : number = 0;
  for(let i = 0;i<numbers.length;i++){
    result+= numbers[i];
  }
  return result
}

调用

复制代码
    //调用
    sum(1,2,3);
    sum(1,4)

不建议下面遍历循环的写法

for(let i of numbers){

}

箭头函数(lambda表达式)

复制代码
let add1 = (x:number,y:number):number=>{
  return x+y;
}
//省略返回值
let add2 = (x:number,y:number)=>{
  return x+y;
}
//省略return语句(只有一行代码的时候使用)
let add3 = (x:number,y:number)=> x+y;

type关键字

type定义函数类型

复制代码
//f1就是一个函数类型
type f1 = (x:number)=>number;
function doFunction(f:f1){
  f(8)
}
//这样调用,就好比直接调用Math.sin(8)
doFunction(Math.sin)

参数是函数,有不同的叫法,比如hook,钩子,回调等。执行的内容由我们传入,执行的某些功能集成到别人的代码里了。

闭包

返回类型是函数,容易造成内存泄漏

复制代码
function function9():()=>number{
  let count = 0;
  let g =():number => {count++;return count}
  return g;
}

注意:下面的写法容易造成内存泄漏

复制代码
function function9():()=>number{
  let count = 0;
  let g =():number => {count++;return count}
  return g;
}
let z = function9 ();//z可以理解为g对象
z();//第一次调用返回1
z();//第二次调用返回2
//上面第二次调用的时候  let g =():number => {count++;return count}
//所在的内存区不会回收,所以第一次是1,第二次是2 

解决办法

复制代码
//代码结尾增加
z = null ;

数组与枚举

复制代码
//数组
let names : string[] = ["1","2","3"];
//枚举类型,枚举类型可以赋予默认值,但所有的值必须相同。一般开发中是不需要赋值的
enum MyColor{
  MyRed,
  MyGreen,
  MyBlue
}
//使用
let c:MyColor= MyColor.MyRed

联合类型

复制代码
//联合类型
class Cat{}
class Dog{}
type Pet = Cat|Dog 

复制代码
class Person {
  //类中的字段和普通变量必须有初始值
  //有默认值了就可以不写构造方法。字符串不能为null
  name: string = '';
  //下划线变量
  _age: number = 0;
  //静态属性,使用类名调用
  static X: string = ''
  //可选参数,也必须写初始值
  isVirgin?:boolean = false;


  constructor(name:string,age:number) {
    this.name = name;
    this.age = age;
    Person.X = '杀气'
  }
  //SetGet方法
  setName(name:string):void{
    this.name = name;
  }
  getName():string{
    return this.name;
  }
  //下划线变量的get方法和set方法
  get age():number{
    return this.age;
  }
  set age(n:number){
    this.age = n;
  }
}
let p:Person = new Person("孙悟空",800);
p.age;//访问的是get方法
p.age = 10;//访问的是set方法

访问控制符:private protected public(与JAVA相同)

键值对中可以使用字面量,如下图

类的方法

复制代码
class C{
  //类中的方法不需要带function
  add0(x:number,y:number):number{
    return x+y;
  }
  //静态方法
  static add1(x:number,y:number):number{
    return x+y;
  }
}
相关推荐
l134062082357 小时前
Flutter Geocoding 在鸿蒙上的使用指南
flutter·华为·harmonyos
俩毛豆7 小时前
【毛豆工具集】【UI】【多设备适配】实现与屏幕密度等倍的图片加载
华为·harmonyos
l134062082358 小时前
344.在鸿蒙上使用 animations Flutter 包的指南
flutter·华为·harmonyos
灯前目力虽非昔,犹课蝇头二万言。9 小时前
HarmonyOS笔记12:生命周期
笔记·华为·harmonyos
Random_index10 小时前
#HarmonyOS篇:学习UI规范基本语法&&学习UI范式装填管理V1&&学习UI范式装填管理V2&&学习UI范式渲染控制
harmonyos
前端世界11 小时前
鸿蒙分布式权限管理实战指南:架构原理 + 可运行 Demo
分布式·架构·harmonyos
前端世界11 小时前
鸿蒙分布式通信安全实践:中间人攻击原理与防御实现
分布式·华为·harmonyos
20 小时前
鸿蒙——通知
华为·harmonyos·
周胡杰1 天前
鸿蒙preferences单多例使用,本地存储类
缓存·华为·harmonyos·preferences·鸿蒙本地存储
IvanCodes1 天前
[鸿蒙2025领航者闯关] 共享终端的隐形守护者:基于 HarmonyOS 6 的全链路隐私闭环实战
华为·harmonyos·鸿蒙